我在表单1中有一个人员列表,他们将技能作为列,例如Languages(Lang):
Lang Skill2 Skill3
P1 x x x
P2 x x x
P3 x x x
在表2中,我有特定技能的矩阵和行中的人(P1,P2,P3),以及语言(L1,L2,L3)的所有列只是说“是”和“否”
L1 L2 L3
P1 y n n
P2 y y n
P3 y n y
现在我的目标是如果在特定人员的下方单元格中显示“是”,则返回表单2中的标题(L1)。并在List中输入标题,或者在Sheet 1中用逗号(,)分隔文本字符串。
我想尽可能地干净利落,而且我已经尝试了几天来提出一个公式。不幸的是,到目前为止都没有成功。
你能帮我解决这个问题吗?
此时我几乎可以使用任何东西,即使使用VBA(如有必要)。 两个表都是格式化表。如果有必要知道。
提前谢谢。
答案 0 :(得分:0)
我建议你使用以下公式。
=IF(Sheet2!B2="y";Sheet2!B$1&", ";"")&IF(Sheet2!C2="y";Sheet2!C$1&", ";"")&IF(Sheet2!D2="y";Sheet2!D$1&", ";"")
您只需为其他语言添加新的IF条件。您还可以使用其他数据源为新技能添加新公式。
LEFT功能会切断最后一项技能背后的空格和逗号分隔符。但如果人们不说语言,那么就会导致错误。但您可以通过以下方式更新公式
=IF(COUNTIF(Sheet2!B2:D2;"y")>0; LEFT(IF(Sheet2!B2="y";Sheet2!B$1&", ";"")&IF(Sheet2!C2="y";Sheet2!C$1&", ";"")&IF(Sheet2!D2="y";Sheet2!D$1&", ";"");LEN(IF(Sheet2!B2="y";Sheet2!B$1&", ";"")&IF(Sheet2!C2="y";Sheet2!C$1&", ";"")&IF(Sheet2!D2="y";Sheet2!D$1&", ";""))-2);"")
然后,如果人没有技能,则将单元留空。
请注意my example sheet,您可以在其中查看数据的示例输出。
编辑#1
我没有意识到,对于美国语言设置,有一个逗号作为默认列表分隔符。因此,默认美国语言环境的更新公式为:
=IF(COUNTIF(Sheet2!B2:D2,"y")>0, LEFT(IF(Sheet2!B2="y",Sheet2!B$1&", ","")&IF(Sheet2!C2="y",Sheet2!C$1&", ","")&IF(Sheet2!D2="y",Sheet2!D$1&", ",""),LEN(IF(Sheet2!B2="y",Sheet2!B$1&", ","")&IF(Sheet2!C2="y",Sheet2!C$1&", ","")&IF(Sheet2!D2="y",Sheet2!D$1&", ",""))-2),"")