Google Spreadsheet long IF statement? - google-sheets

I have this statement:
=if(
F1B!D3="1",50+FLOOR(D2/10,1),
if(F1B!D3="2",40),
if(F1B!D3="3",30),
if(F1B!D3="4",25),
if(F1B!D3="5",20),
if(F1B!D3="6",19),
if(F1B!D3="7",18),
if(F1B!D3="8",17),
if(F1B!D3="9",16),
if(F1B!D3="10",15),
if(F1B!D3="11",14),
if(F1B!D3="12",13),
if(F1B!D3="13",12),
if(F1B!D3="14",11),
if(F1B!D3="15",10),
if(F1B!D3="16",9),
if(F1B!D3="17",8),
if(F1B!D3="18",7),
if(F1B!D3="19",6),
if(F1B!D3="20",5),
if(F1B!D3="21",4),
if(F1B!D3="22",3),
if(F1B!D3="23",2),
if(F1B!D3="24",1));
But GoogleDocs return me "error: Wrong number of arguments to IF"
What I'am doing wrong?

You can't pass infinitely many arguments to IF. There's a single condition, a single "THEN", and a single "ELSE". You need to "nest" your IF statements, where each new IF() in part of the previous IF statement's ELSE. Something like this (abbreviated):
=if(
F1B!D3="1",50+FLOOR(D2/10,1),
if(F1B!D3="2",40,
if(F1B!D3="3",30,
if(F1B!D3="4",25,
if(F1B!D3="5",20,
if(F1B!D3="6",19,
if(F1B!D3="7",18)))))))

Trying to apply too many IFs, far more than necessary:
=IF(F1B!D3=1,50+FLOOR(F1B!D2/10,1),iferror(CHOOSE(F1B!D3-1,40,30,25),25-F1B!D3))
Also do not append ;.

Related

Use regexmatch with Switch case

I have a list of text on col A and I like to run a switch based on if there is a regexmatch in that cell..
A1 = "https://www.amazon.es/dp/B07PHPXHQS/ref=gw_es_desk_h1_aucc_cr_vd20?pf_rd_p=b1bd6d90-90a7-419a-8a6e-8c943ef52b62&pf_rd_r=XKJEDGQX6TSJ91JF0B6Y"
=switch(A1,REGEXMATCH(A1, "amazon."),"amazon",REGEXMATCH(A1, "lifehacker."),"LFH",REGEXMATCH(A1, "engadget."),"ENG","other")
If the link is amazon.com/whatever it should return "amazon" and so on
I get no error.. but I always get "other" as if regexmatch would not work here.
Any other way to do this?
Try this:
=ifs(
REGEXMATCH(A1,"this"),"that",
REGEXMATCH(A1,"this2"),"that2",
REGEXMATCH(A1,"this3"),"this3",
TRUE,elseGoesHere)
That last line is the ticket don't forget its a new case,value pair so don't forget the preceding coma
It's kind of a category error because in your switch statement you are trying to compare the whole string in A1 to the result of the REGEXMATCH function calls which would actually be TRUE, TRUE and FALSE. To make this work using a switch statement you would need to do something like this:
=iferror(switch(regexextract(A1,"amazon.|lifehacker.|engadget."),"amazon.","amazon","lifehacker.","LFH","engadget.","ENG"),"other")
but I suspect that there are more elegant ways of doing this.

Replacing empty cells in a variable with values from another

I have a dataset with a number of columns. Two of them are practically the same however in variable column 1 there are string data that I would like to extract and replace in empty cells of variable column 2.
I tried using the syntax
If
variable_2 = "".
Compute variable_1 = variable_2.
End If
But do not get anything. Please, could someone help with this?
Much appreciated.
This should be either
if var2="" var2=var1.
(no period after the condition, no "end if")
OR
do if var2="".
compute var2=var1.
end if.
(this is a "do if" and not just an "if" - enables you to add commands after the condition, and not needed here).
In any case, if variable_2 is empty you want to run variable_2=variable_1 and not the reverse.

Google Sheets' operators

Do Google Sheets have a || operator like most of the languages?
I'm trying to use it inside a switch function to nest some values.
=SWITCH(G5;"BLACKOLIVES";"BLACK";"JABOTICABA";"BLACK";"MULLBERIES";"BLACK")
this is how I'm doing it now, I want to do it somewhat like whats next
=SWITCH(G5;"BLACKOLIVES"||"JABOTICABA"||"MULLBERIES";"BLACK")
but this statement returns an error and I can't find a ||-like operator in the documentation.
Does anyone have an idea how to solve this?
Maybe you could use something like
=if(regexmatch(G5, "BLACKOLIVES|JABOTICABA|MULLBERIES"),"BLACK",)
In regular expressions the "pipe"-character means 'or'...
an alternative syntax would be:
=IF(OR(G5="BLACKOLIVES", G5="JABOTICABA", G5="MULLBERIES"), "BLACK", )

How to shorten this syntax in Google Sheet?

Can this (Google Sheet) =IFS syntax be improved?
=IFS(and(E42>E38;E42>E34;E42>E30;E42>E26;E42>E22;E42>E18); "Cattleman";
and(E38>E42;E38>E34;E38>E30;E38>E26;E38>E22;E38>E18); "Naturalist";
and(E34>E42;E34>E38;E34>E30;E34>E26;E34>E22;E34>E18); "Farmer";
and(E30>E42;E30>E38;E30>E34;E30>E26;E30>E22;E30>E18); "Carpenter";
and(E26>E42;E26>E38;E26>E30;E26>E34;E26>E22;E26>E18); "Blacksmith";
and(E22>E42;E22>E38;E22>E30;E22>E34;E22>E26;E22>E18); "Miner";
and(E18>E42;E18>E38;E18>E30;E18>E34;E18>E22;E18>E26); "Builder")
And how can I add a default value so that if this syntax returns FALSE it doesn't say #N/A! in the cell, but "No class" or something similar instead (or empty)?
One obvious way would be to replace the ANDs with a MAX. Why? In the first line, if E42 is greater than all of the other cells, it must be greater than the MAX of them. So the condition in this line
E42 > MAX(E38; E34; E30; E26; E22; E18)
which looks much cleaner. Repeat for the other lines.
Trying to simplify it more, the logic of the formula seems to be that depending on which of the cells is the greatest, you choose a particular literal value. There is a function for that! I'd try this (can't test it though without access to your data)
=CHOOSE(
MATCH(
MAX(E42; E38; E34; E30; E26; E22; E18);
{E42; E38; E34; E30; E26; E22; E18});
"Cattleman"; "Naturalist"; "Farmer"; "Carpenter"; "Blacksmith"; "Miner"; "Builder")
wrap it in IFERROR like this:
=IFERROR(IFS(
AND(E42>E38;E42>E34;E42>E30;E42>E26;E42>E22;E42>E18);"Cattleman";
AND(E38>E42;E38>E34;E38>E30;E38>E26;E38>E22;E38>E18);"Naturalist";
AND(E34>E42;E34>E38;E34>E30;E34>E26;E34>E22;E34>E18);"Farmer";
AND(E30>E42;E30>E38;E30>E34;E30>E26;E30>E22;E30>E18);"Carpenter";
AND(E26>E42;E26>E38;E26>E30;E26>E34;E26>E22;E26>E18);"Blacksmith";
AND(E22>E42;E22>E38;E22>E30;E22>E34;E22>E26;E22>E18);"Miner";
AND(E18>E42;E18>E38;E18>E30;E18>E34;E18>E22;E18>E26);"Builder");
"No class")

Joining more than two WHERE statements in Query Language

So I am trying to use a simple QUERY function in Google Sheets where I want to select based on TWO parameters. Simple logic, and documentation says use the AND operator. The problem is I am searching for text via Cell Reference.
So here is my function
=QUERY(A1:D6,"select A where C='" &K1&'"" & "and D='" &K2"'")
Unfortunately it throws up an ERROR. I understand that Cell References that are text based need to be in single quotes (which themselves need to be in double quotes), but I am unable to join two WHERE statements.
What is the right syntax for this?
Very close indeed, please try:
=query(A1:D6,"select A where C='"&K1&"' and D='"&K2&"' ")
Welp! I was missing an concatenation symbol (&) at the end of the final cell reference K2.
=QUERY(A1:D6,"select A where C='" &K1&'"" & "and D='" &K2&"'")

Resources