如果单元格在标题下方显示“是”,Excel 2016将返回页面2中的标题。并将其插入工作表1

时间:2016-11-15 08:36:42

标签: excel

我在表单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(如有必要)。 两个表都是格式化表。如果有必要知道。

提前谢谢。

1 个答案:

答案 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),"")