Consulting

Results 1 to 9 of 9

Thread: HOW TO CONCATENATE: IF(condition;result string;result string) result string?

  1. #1
    VBAX Regular
    Joined
    Dec 2021
    Posts
    58
    Location

    HOW TO CONCATENATE: IF(condition;result string;result string) result string?

    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.

  2. #2
    Moderator VBAX Wizard Aussiebear's Avatar
    Joined
    Dec 2005
    Location
    Queensland
    Posts
    5,057
    Location
    You could try =IF(condition;result string;result string) "& " IF(condition;result string;result string)
    Remember To Do the Following....
    Use [Code].... [/Code] tags when posting code to the thread.
    Mark your thread as Solved if satisfied by using the Thread Tools options.
    If posting the same issue to another forum please show the link

  3. #3
    VBAX Regular
    Joined
    Dec 2021
    Posts
    58
    Location
    Quote Originally Posted by Aussiebear View Post
    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í!"))))

  4. #4
    Moderator VBAX Master georgiboy's Avatar
    Joined
    Mar 2008
    Location
    Kent, England
    Posts
    1,194
    Location
    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 &
    Click here for a guide on how to add code tags
    Click here for a guide on how to mark a thread as solved
    Click here for a guide on how to upload a file with your post (you may need to click 'Go Advanced')

    Excel 365, Version 2403, Build 17425.20146

  5. #5
    VBAX Regular
    Joined
    Dec 2021
    Posts
    58
    Location
    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.

  6. #6
    VBAX Regular
    Joined
    Dec 2021
    Posts
    58
    Location
    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.

  7. #7
    Moderator VBAX Master georgiboy's Avatar
    Joined
    Mar 2008
    Location
    Kent, England
    Posts
    1,194
    Location
    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:
    PHP Code:
    =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í!","")))) 
    Click here for a guide on how to add code tags
    Click here for a guide on how to mark a thread as solved
    Click here for a guide on how to upload a file with your post (you may need to click 'Go Advanced')

    Excel 365, Version 2403, Build 17425.20146

  8. #8
    VBAX Regular
    Joined
    Dec 2021
    Posts
    58
    Location
    Thank you georgiboy,
    so it is clear now, that the final IF - ELSE block was missing. The deepest one.

    ""))))  

  9. #9
    Moderator VBAX Master georgiboy's Avatar
    Joined
    Mar 2008
    Location
    Kent, England
    Posts
    1,194
    Location
    Glad you got it all sorted.
    Click here for a guide on how to add code tags
    Click here for a guide on how to mark a thread as solved
    Click here for a guide on how to upload a file with your post (you may need to click 'Go Advanced')

    Excel 365, Version 2403, Build 17425.20146

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •