If value does not match in a cell then show it in another cell - google-sheets

I have a Google Sheet in which there are multiple codes. In one cell there is more than one code and in the other cell, the decision selected by the user is followed by the code.
Responses are fixed for the given codes.
I want the sheet to show if the codes selected by the users are wrong or correct in another column (if correct then leave the cell blank else to show the code selected by the user i.e the wrong code).
The conditions are:
Case 1: if the code displayed in column A is either "P" or "W" then the user's decision (column B) should be either "NO" or "YES" and the code (column C) selected by the user should be either "N" (if the decision is "NO") or "R" (if the decision is "YES") then in column D if the decision and code matches then leave the cell blank else to show the wrong code selected by the user.
Case 2: if the code displayed in column A does not have "P" or "W" code in the cell then the user's decision (column B) should be "NO" and the code (column C) selected by the user should be "IM" then in column D if the decision and code matches then leave the cell blank else to show the wrong code selected by the user. (P.S.: this condition can be created in another column).
I'm sharing a screenshot for reference. I searched for a formula but nothing worked.
Thank you.

You may try:
=indeX(lambda(regX,if(len(A2:A),
IF((regX*(B2:B="NO")*(C2:C="N"))+
(regX*(B2:B="YES")*(C2:C="R"))+
(not(regX)*(B2:B="NO")*(C2:C="IM")),,C2:C),))
(regexmatch(A2:A,"\b(P|W)\b")))

Related

Can I add a floating column to a Sheets query?

I have a Sheet like this [minimal] example. The "Data" tab is a running list of points different groups have scored. This is constantly updating. The "Results" tabs gets a list of all the unique group names from the Data tab and add them as a row in Column A. So, if an entry for "Group5" is entered on the Data tab, a row with that name will appear on the Results tab. Similar for the columns on the results tab. Each unique action on the Data tab becomes a column on the results tab.
I would like to add a "Total" column to the last column on the Results tab. The problem is, if a new "action" category appeared on the data tab, it would take up the last column and the Total column would need to shift over one. Is there a way to get the "Total" column to float so that it is always on the end without conflicting with the query formula?
In B1 cell put below formula-
={TRANSPOSE(UNIQUE(QUERY(Data!C2:C, "SELECT C where C is not null",0))),"Total"}
In B2 cell put below formula then drag down and right as needed.
=IF(OR($A2="",B$1=""),"",IF(B$1="Total",SUMIFS(Data!$D$2:$D,Data!$B$2:$B,$A2),
SUMIFS(Data!$D$2:$D,Data!$C$2:$C,B$1,Data!$B$2:$B,$A2)))

Automatically remove from drop down list in google sheets

Say that I have a dropdown list based on a column that has "cat, dog and rat" on it, and some lines select the option rat on the dropdown. After that I remove "rat" from the column (so form the dropdown), but the lines that had "rat" on it still with it and a msg saying that this data is invalid.
Is there a way to automatically remove the selected item that is not at the dropdown anymore? (put it blank maybe)
Check this image... "LEOBAZEREDO" is not on the list anymore, but his name is there with an alert. I would like that at this line the dropdown become blank when I remove LEOBAZEREDO from the itens
I just figured this out hope it helps someone:
I made the drop-down list using range (i5:i16)
then I used the following formula in each cell in that range:
=if((countif($B$5:$G$5,"Jan"))>0,"","Jan")
changing the month accordingly.
this removes the text from the cell ounce it is used.
Just to break it down a little....the countif portion (countif($B$5:$G$5,"Jan") will return "1" if it finds Jan in the range $B$5:$G$5 since this is bigger than 0 the if-function will put ""(no text)in the cell if it doesn't find "Jan" then it returns a 0 and the if-functions ads "Jan" to the cell.
photo in link

How do I format a cell, only when it's not empty, based on the input of another cell?

I'm working on a spreadsheet in Google Sheets for multiple people, and indicate in a column who the person the information on that row pertains to. I want to format cells on that column, only when they're not empty, based on what person is selected in another cell.
I can create functions to format things based on another cell's entry, but I don't know how to compound that with a function for not being empty. Sorry if this is super basic, I just can't figure it out.
Yep. This is a super simple thing to do.
1) Highlight the column where the person's name appears.
2) From the main menu, select Format, Conditional formatting.
3) In the sidebar click add a new rule. what you want to do is create one rule for each name that appears (or could appear) in that column.
4) Under "Format cells if, select "Text is exactly"
5) Type the name in the cell where it says Value or Formula
6) Choose a background colour to suit.
7) Click Done.
8) Repeat steps 3 to 7 for each person; but change the background colour in each case.
Here's an example.

find corresponding cell depending on other cell

I'd like to get the value of a cell depending on the value entered in another cell. I have different sheets in my workbook :
Sheet 1: One with a list of people and adresses
Sheet 2: One with a list of orders from these people
In Sheet 2, when I choose a client's name from the dropdown list (created via data-validation list with sheet 1), I'd like his address to display automatically in another cell (same row, different column).
Is there a way to do that ?
Thanks in advance !
A simple vlookup will do this. Assuming you have the dropdown in A2 of Sheet2, put this in Sheet2 in the column you want the address in. If you have a dropdown in each row, drag the formula down:
=iferror(vlookup(A2,Sheet1!A2:B4,2,false))

Apply formula to the entire column

I'm changing all the zip codes from Column A into Column B with the formula:
=TEXT(A1,"00000")
Like this:
I want every cell in Column B to be transformed using the formula above. But I have over 40,000 rows, so it is not feasible to drag the formula down to apply it to the entire Column B because it takes so long.
Are there any alternatives to dragging?
It looks like some of the other answers have become outdated, but for me this worked:
Click on the cell with the text/formula to copy
Shift+Click on the last cell to copy to
Ctrl + Enter (Cmd + Enter on Mac.)
(Note that this replaces text if the destination cells aren't empty)
I think it's a more recent feature, but...
Double clicking the square on the bottom right of the highlighted cell copies the formula of the highlighted cell.
I think you are in luck. Please try entering in B1:
=text(A1:A,"00000")
(very similar!) but before hitting Enter hit Ctrl+Shift+Enter.
This is a shortcut for wrapping the formula with ArrayFormula():
=ArrayFormula(text(A1:A,"00000"))
This worked for me:
Input the formula in the first cell.
Press Enter.
Click on the first cell and press Ctrl + Shift + down_arrow. This will select the last cell in the column used on the worksheet.
Ctrl + D. This will fill copy the formula in the remaining cells.
This is for those who want to overwrite the column cells quickly (without cutting and copying). This is the same as double-clicking the cell box but unlike double-clicking, it still works after the first try.
Select the column cell you would like to copy downwards
Press Ctrl+Shift+⇓ to select the cells below
Press Ctrl+Enter to copy the contents of the first cell into the cells below
BONUS:
The shortcut for going to the bottom-most content (to double-check the copy) is Ctrl+⇓. To go back up you can use Ctrl+⇑ but if your top rows are frozen you'll also have to press Enter a few times.
For Mac:
Click on the first cell having the formula and press Ctrl + Shift + down_arrow. This will select the last cell in the column used on the worksheet.
Command + D
(don't use ctrl). This will fill the formula in the remaining cells.
Let's say you want to substitute something in an array of string and you don't want to perform the copy-paste on your entire sheet.
Let's take this as an example:
String array in column "A": {apple, banana, orange, ..., avocado}
You want to substitute the char of "a" to "x" to have: {xpple, bxnxnx,
orxnge, ..., xvocado}
To apply this formula on the entire column (array) in a clean an elegant way, you can do:
=ARRAYFORMULA(SUBSTITUE(A:A, "a", "x"))
It works for 2D-arrays as well, let's say:
=ARRAYFORMULA(SUBSTITUE(A2:D83, "a", "x"))
Found another solution:
Apply the formula to the first 3 or 4 cells of the column
Ctrl + C the formula in one of the last rows (if you copy the first line it won't work)
Click on the column header to select the whole column
Press Ctrl + V to paste it in all cells bellow
Just so I don't lose my answer that works:
Select the cell to copy
Select the final cell in the column
Press CTRL+D
You can use Ctrl+Shift+Down+D to add the formula to every cell in the column as well.
Simply click/highlight the cell with the equation/formula you want to copy and then hold down Ctrl+Shift+Down+D and your formula will be added to each cell.
The exact formula is:
=ArrayFormula(text(A1:A,"00000"))
ArrayFormula works on multiple rows (in the above example, every row), and results are placed in the cell with the formula and the cells below it in the same column. It looks as if the same formula was copied into all those rows.
If any of the cells in that column are not empty, they won't get overwritten. Instead, you will get an error message.
To save yourself typing, you can use the trick from the answer above by pnuts:
Type: =text(A1:A,"00000") and then hit the following key combination:
On windows: Ctrl+Shift+Enter
On a MAC: Command+Shift+Enter
This will convert the formula to ArrayFormula.
After hitting the key combination, you need to hit Enter, to actually apply the converted formula.
If your sheet contains header row(s), and you want to apply formula from (for example) row 5 on, you would use =text(A5:A,"00000") instead.
This answer includes information from pnuts's answer and LOAS's comment.
Lambda Solution
Using the new LAMBDA and MAP functions, this is now doable without an ArrayFormula or having to drag anything.
=MAP(A2:A6, LAMBDA(value, TEXT(value, "00000")))
LAMBDA defines a function. value is the parameter, which we can use in the formula expression.
MAP applies the LAMBDA to each value in the given range. This also works on 2D ranges.
To be clear when you us the drag indicator it will only copy the cell values down the column whilst there is a value in the adjacent cell in a given row.
As soon as the drag operation sees an adjacent cell that is blank it will stop copying the formula down.
.e.g
1,a,b
2,a
3,
4,a
If the above is a spreadsheet then using the double click drag indicator on the 'b' cell will fill row 2 but not row three or four.
Well, Another easiest and simplest way is as in my file rows were above 16000, which is pretty huge number. So steps which helped me are:
1. Select the cell in which formula is written.
2. Then go to NameBox(it is the box which tells about active cell). Here in my case it was the cell where was formula was written(i.e P2).
3. Then in that cell type your active cell number:your last row.For example last row of my column was 16745 and formula was written in P2.
So write P2:P16745,
4. Press Enter in Name Box and bingo your whole area of column till last row is selected.
5. Now press Ctrl+D(Windows)
try:
=INDEX(TEXT(A2:A; "00000"))
advantages: short, works, smells nice
to map out empty cells you can do:
=INDEX(IF(A2:A="";;TEXT(A2:A; "00000")))
Reading the answers here did not quite work for me, but a combination did. Here are my steps (Windows, Chrome):
Select the cell with the formula you want to apply to the column (for the whole column, ensure this is the top cell)
Ctrl + Shift + Down (selects all below cells)
Ctrl + D (apply formula)
Done!
Based on:
https://stackoverflow.com/a/61112723/3200858
https://stackoverflow.com/a/51411774/3200858
You may fill the column by double-clicking on the bottom right hand corner of the cell which you want to copy from (the point on the box that you would otherwise drag) and it will be applied to whole column.
NB: This doesn't work if you have the filter applied, nor if there is already something already in the cells below.

Resources