Excel连接字符串,包括if else语句

时间:2019-06-21 10:27:39

标签: excel if-statement excel-formula concatenation

我有这张桌子

      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

谢谢

2 个答案:

答案 0 :(得分:0)

中频之后的括号

 ="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&"';"

答案 1 :(得分:0)

如果要在单元格中包含多个“ 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