PDA

View Full Version : [SOLVED:] HOW TO CONCATENATE: IF(condition;result string;result string) result string?



vangog
09-26-2022, 08:40 PM
Hello, how to concatenate two IF functions to get result type string?

A)

=IF(condition;result string;result string)&IF(condition;result string;result string)
returns result BOOLEAN
B)


=CONCATENATE(IF(condition;result string;result string);IF(condition;result string;result string))
returns result BOOLEAN
C)

CONCATENATE( IF (...);&" ";IF (...);)
returns result BOOLEAN

I need result string.

The example code I am solving is
=CONCATENATE(IF(AND(ROUND(QUARTIL(C8:C11;2);3)>1600; MEAN(QUARTIL(C8:C11;2))>1600;ROUND(C8;3) >1600);"Čtyřnásobné masové vyhlazení!";IF(AND(ROUND(QUARTIL(C8:C10;2);3)>1200; MEAN(QUARTIL(C8:C10;2)) >1200;ROUND(C8;3) >1200);"Trojnásobné masové vyhlazení!";IF(AND(ROUND(QUARTIL(C8:C9;2);3)>800; MEAN(QUARTIL(C8:C9;2)) >800;ROUND(C8;3) >800);"Masové vyhlazení!";""))); "";IF(AND(ROUND(QUARTIL(C8:C15;2);3)>=3200;MEAN(QUARTIL(C8:C15;2)) >=3200;ROUND(C8;3) >=320);"Nepřítel byl stižen apokalypsou. Totální vyhlazení.";IF(AND(ROUND(QUARTIL(C8:C14;2);3)>2800; MEAN(QUARTIL(C8:C14;2)) >2800;ROUND(C8;3) >2800);"Nepřítel byl stižen apokalypsou. Totální vyhlazení.";IF(AND(ROUND(QUARTIL(C8:C13;2);3)>2400; MEAN(QUARTIL(C8:C13;2))>2400;ROUND(C8;3) >2400);"Probíhá genocida nepřítele.";IF(AND(ROUND(QUARTIL(C8:C12;2);3)>2000; MEAN(QUARTIL(C8:C12;2)) >2000;ROUND(C8;3) >2000);"Pětinásobné masové vyhlazení!")))))

with boolean result.

Aussiebear
09-27-2022, 12:30 AM
You could try =IF(condition;result string;result string) "& " IF(condition;result string;result string)

vangog
09-27-2022, 01:26 AM
You could try =IF(condition;result string;result string) "& " IF(condition;result string;result string)

I tried...


=IF(1=1;"A";"B") "& " IF(1=1;"A";"B")
Formula contains error.

But this works:


=IF(1=1;"A";"B") & IF(1=1;"A";"B")

result is "AA"

But this returns boolean:

=KDYŽ(A(ZAOKROUHLIT(QUARTIL(C8:C11;2);3)>1600; PRŮMĚR(QUARTIL(C8:C11;2))>1600;ZAOKROUHLIT(C8;3) >1600);"Čtyřnásobné masové vyhlazení!";KDYŽ(A(ZAOKROUHLIT(QUARTIL(C8:C10;2);3)>1200; PRŮMĚR(QUARTIL(C8:C10;2)) >1200;ZAOKROUHLIT(C8;3) >1200);"Trojnásobné masové vyhlazení!";KDYŽ(A(ZAOKROUHLIT(QUARTIL(C8:C9;2);3)>800; PRŮMĚR(QUARTIL(C8:C9;2)) >800;ZAOKROUHLIT(C8;3) >800);"Masové vyhlazení!";""))) & KDYŽ(A(ZAOKROUHLIT(QUARTIL(C8:C15;2);3)>=3200;PRŮMĚR(QUARTIL(C8:C15;2)) >=3200;ZAOKROUHLIT(C8;3) >=320);"Nepřítel byl stižen apokalypsou. Totální vyhlazení.";KDYŽ(A(ZAOKROUHLIT(QUARTIL(C8:C14;2);3)>2800; PRŮMĚR(QUARTIL(C8:C14;2)) >2800;ZAOKROUHLIT(C8;3) >2800);"Nepřítel byl stižen apokalypsou. Totální vyhlazení.";KDYŽ(A(ZAOKROUHLIT(QUARTIL(C8:C13;2);3)>2400; PRŮMĚR(QUARTIL(C8:C13;2))>2400;ZAOKROUHLIT(C8;3) >2400);"Probíhá genocida nepřítele.";KDYŽ(A(ZAOKROUHLIT(QUARTIL(C8:C12;2);3)>2000; PRŮMĚR(QUARTIL(C8:C12;2)) >2000;ZAOKROUHLIT(C8;3) >2000);"Pětinásobné masové vyhlazení!"))))
English

=IF(A(ROUND(QUARTIL(C8:C11;2);3)>1600; MEAN(QUARTIL(C8:C11;2))>1600;ROUND(C8;3) >1600);"Čtyřnásobné masové vyhlazení!";IF(A(ROUND(QUARTIL(C8:C10;2);3)>1200; MEAN(QUARTIL(C8:C10;2)) >1200;ROUND(C8;3) >1200);"Trojnásobné masové vyhlazení!";IF(A(ROUND(QUARTIL(C8:C9;2);3)>800; MEAN(QUARTIL(C8:C9;2)) >800;ROUND(C8;3) >800);"Masové vyhlazení!";""))) & IF(A(ROUND(QUARTIL(C8:C15;2);3)>=3200;MEAN(QUARTIL(C8:C15;2)) >=3200;ROUND(C8;3) >=320);"Nepřítel byl stižen apokalypsou. Totální vyhlazení.";IF(A(ROUND(QUARTIL(C8:C14;2);3)>2800; MEAN(QUARTIL(C8:C14;2)) >2800;ROUND(C8;3) >2800);"Nepřítel byl stižen apokalypsou. Totální vyhlazení.";IF(A(ROUND(QUARTIL(C8:C13;2);3)>2400; MEAN(QUARTIL(C8:C13;2))>2400;ROUND(C8;3) >2400);"Probíhá genocida nepřítele.";IF(A(ROUND(QUARTIL(C8:C12;2);3)>2000; MEAN(QUARTIL(C8:C12;2)) >2000;ROUND(C8;3) >2000);"Pětinásobné masové vyhlazení!"))))

georgiboy
09-27-2022, 01:29 AM
The & can't be within the """


=IF(1=1,"A","B") & IF(1=1,"A","B")

=CONCATENATE(IF(1=1,"A","B"), IF(1=1,"A","B"))

Or


=IF(1=1,"A","B") & " & " & IF(1=1,"A","B")

=TEXTJOIN(" & ",TRUE,IF(1=1,"A","B"),IF(1=1,"A","B"))

If you want the result to include the &

vangog
09-27-2022, 01:59 AM
Thank you georgiboy but in my case using the syntax:
expresion&" "&expresion
does not return string but boolean:

=KDYŽ(A(ZAOKROUHLIT(QUARTIL(C8:C11;2);3)>1600; PRŮMĚR(QUARTIL(C8:C11;2))>1600;ZAOKROUHLIT(C8;3) >1600);"Čtyřnásobné masové vyhlazení!";KDYŽ(A(ZAOKROUHLIT(QUARTIL(C8:C10;2);3)>1200; PRŮMĚR(QUARTIL(C8:C10;2)) >1200;ZAOKROUHLIT(C8;3) >1200);"Trojnásobné masové vyhlazení!";KDYŽ(A(ZAOKROUHLIT(QUARTIL(C8:C9;2);3)>800; PRŮMĚR(QUARTIL(C8:C9;2)) >800;ZAOKROUHLIT(C8;3) >800);"Masové vyhlazení!";"")))&" "&KDYŽ(A(ZAOKROUHLIT(QUARTIL(C8:C15;2);3)>=3200;PRŮMĚR(QUARTIL(C8:C15;2)) >=3200;ZAOKROUHLIT(C8;3) >=320);"Nepřítel byl stižen apokalypsou. Totální vyhlazení.";KDYŽ(A(ZAOKROUHLIT(QUARTIL(C8:C14;2);3)>2800; PRŮMĚR(QUARTIL(C8:C14;2)) >2800;ZAOKROUHLIT(C8;3) >2800);"Nepřítel byl stižen apokalypsou. Totální vyhlazení.";KDYŽ(A(ZAOKROUHLIT(QUARTIL(C8:C13;2);3)>2400; PRŮMĚR(QUARTIL(C8:C13;2))>2400;ZAOKROUHLIT(C8;3) >2400);"Probíhá genocida nepřítele.";KDYŽ(A(ZAOKROUHLIT(QUARTIL(C8:C12;2);3)>2000; PRŮMĚR(QUARTIL(C8:C12;2)) >2000;ZAOKROUHLIT(C8;3) >2000);"Pětinásobné masové vyhlazení!"))))
English:

=IF(AND(ROUND(QUARTIL(C8:C11;2);3)>1600; MEAN(QUARTIL(C8:C11;2))>1600;ROUND(C8;3) >1600);"Čtyřnásobné masové vyhlazení!";IF(AND(ROUND(QUARTIL(C8:C10;2);3)>1200; MEAN(QUARTIL(C8:C10;2)) >1200;ROUND(C8;3) >1200);"Trojnásobné masové vyhlazení!";IF(AND(ROUND(QUARTIL(C8:C9;2);3)>800; MEAN(QUARTIL(C8:C9;2)) >800;ROUND(C8;3) >800);"Masové vyhlazení!";"")))&" "&IF(AND(ROUND(QUARTIL(C8:C15;2);3)>=3200;MEAN(QUARTIL(C8:C15;2)) >=3200;ROUND(C8;3) >=320);"Nepřítel byl stižen apokalypsou. Totální vyhlazení.";IF(AND(ROUND(QUARTIL(C8:C14;2);3)>2800; MEAN(QUARTIL(C8:C14;2)) >2800;ROUND(C8;3) >2800);"Nepřítel byl stižen apokalypsou. Totální vyhlazení.";IF(AND(ROUND(QUARTIL(C8:C13;2);3)>2400; MEAN(QUARTIL(C8:C13;2))>2400;ROUND(C8;3) >2400);"Probíhá genocida nepřítele.";IF(AND(ROUND(QUARTIL(C8:C12;2);3)>2000; MEAN(QUARTIL(C8:C12;2)) >2000;ROUND(C8;3) >2000);"Pětinásobné masové vyhlazení!"))))


Also I am easy to get to error formula too long, so I try to reduce the depth of formulae expresions.

vangog
09-27-2022, 03:02 AM
I see the error. So I miss one argument in the IF function. I skipped one argument and as a result, there is if ... false part missing. This way it generates FALSE instread a text, because the text is missing. Somehow. I need to find the exact location of the missing argument.

georgiboy
09-27-2022, 03:41 AM
How about as below?

I have corrected some spelling on the English function names and added an "" for if the second argument is false.
QUARTIL changed to QUARTILE
and
MEAN changed to GEOMEAN (this may not give the same result)

But I do get a string and then a "" as the second argument was false for me.

Maybe it will help get you closer:

=IF(AND(ROUND(QUARTILE(C8:C11,2),3)>1600,GEOMEAN(QUARTILE(C8:C11,2))>1600,ROUND(C8,3)>1600),"Čtyřnásobné masové vyhlazení!",IF(AND(ROUND(QUARTILE(C8:C10,2),3)>1200,GEOMEAN(QUARTILE(C8:C10,2))>1200,ROUND(C8,3)>1200),"Trojnásobné masové vyhlazení!",IF(AND(ROUND(QUARTILE(C8:C9,2),3)>800,GEOMEAN(QUARTILE(C8:C9,2))>800,ROUND(C8,3)>800),"Masové vyhlazení!","")))&" "&IF(AND(ROUND(QUARTILE(C8:C15,2),3)>=3200,GEOMEAN(QUARTILE(C8:C15,2))>=3200,ROUND(C8,3)>=320),"Nepřítel byl stižen apokalypsou. Totální vyhlazení.",IF(AND(ROUND(QUARTILE(C8:C14,2),3)>2800,GEOMEAN(QUARTILE(C8:C14,2))>2800,ROUND(C8,3)>2800),"Nepřítel byl stižen apokalypsou. Totální vyhlazení.",IF(AND(ROUND(QUARTILE(C8:C13,2),3)>2400,GEOMEAN(QUARTILE(C8:C13,2))>2400,ROUND(C8,3)>2400),"Probíhá genocida nepřítele.",IF(AND(ROUND(QUARTILE(C8:C12,2),3)>2000,GEOMEAN(QUARTILE(C8:C12,2))>2000,ROUND(C8,3)>2000),"Pětinásobné masové vyhlazení!",""))))

vangog
09-27-2022, 05:44 AM
Thank you georgiboy,
so it is clear now, that the final IF - ELSE block was missing. The deepest one.


""))))

georgiboy
09-27-2022, 05:51 AM
Glad you got it all sorted.