【问题标题】:Excel concatenate strings including if else statementsExcel 连接字符串,包括 if else 语句
【发布时间】:2019-06-21 10:27:39
【问题描述】:

我有这张桌子

      A      B       C       D
 1   User | priv1 | priv2 | priv3
 2   test |   y   |   n   |   n   
 3   more |   n   |   y   |   n  

等等,我想从中生成 db2 命令。

 ="GRANT "&(IF B2="y", B1, "")& ", "&(IF C2="y", C1, "" )& ", "&(IF D2="y", D1, "" )&" on DATABSE TO USER "&A2&";"

应该有

 GRANT priv1 ON DATABASE TO USER test;

但是我无法让那些 IF 部分工作。

有什么想法吗?我尝试了许多语法,但没有一个可以正常工作。 Google 也不是我的朋友。

Windows 10 上的 EXCEL 365

谢谢

【问题讨论】:

    标签: excel if-statement excel-formula concatenation


    【解决方案1】:

    如果你想在单元格中有多个“y”,你可以使用 textJoin 函数

    像这样:

    ="GRANT "&TEXTJOIN(", ";1;IF(B2="y";$B$1;"");IF(C2="y";$C$1;"");IF(D2="y";$D$1;""))&" on DATABASE TO USER "&A2&";"
    

    如果需要,此公式将放置逗号

    这里是工作示例:https://drive.google.com/open?id=1UmuNpkKQz4KWPJIqT8j8iFO1GB5_J119

    更新: 如果您能够更好地修改源表以将其修改为:

          A      B       C       D
     1   User | priv1 |       |     
     2   test | priv2 |       |      
     3   more | priv3 |       |   
     4   other| priv1 | priv3 |
    

    那么公式会像这样更简单:

    ="grant "&TEXTJOIN(", ";1;B2:D2)&" on database to user "&A2&";"
    

    示例如下:https://drive.google.com/open?id=1IiSmT3OYLpxMvaeG0KYgK17ZYengWxWu

    【讨论】:

    • 我得到了#NAME?如果我使用它
    • 可以分享文件吗?
    【解决方案2】:

    IF 后面的括号

     ="GRANT "&IF(B2="y", B1, "")& ", "&IF(C2="y", C1, "" )& ", "&IF(D2="y", D1, "" )&" on DATABASE TO USER "&A2&";"
    

    编辑:并在 B1、C1、D1 和 A2 中的文本中加上引号

    ="GRANT "&IF(B2="y", "'"&B1&"'", "")& ", "&IF(C2="y", "'"&C1&"'", "" )& ", "&IF(D2="y","'"&D1&"'", "" )&" on DATABASE TO USER '"&A2&"';"
    

    【讨论】:

    • 它对我有用 - 有什么错误? - 您是否复制并粘贴了公式?
    • 试试分号作为分隔符?
    • 分号应该放在哪里
    • 对不起 - 我忘了用你的实际数据来测试这个,所以我没有注意到需要引号的文本
    猜你喜欢
    • 2018-03-09
    • 2014-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-18
    • 2013-02-26
    相关资源
    最近更新 更多