我有这张桌子
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
谢谢
答案 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