获取与特定值关联的表中的多个列名(标题)到单元格中

我需要获取与特定值关联到一个单元格中的多个列名(标题)

正如我所解释的那样,我需要将对应于值“n”的标题名称添加到E列。

在这里输入图像说明 我用公式

=INDEX((A$1:D$1),MATCH("n",A2:D2,0)) 

这里。 但它只给出一个列名。

我也开放给vba脚本。 但我认为它不需要vba。 只是改善上面的公式,可能是。 我试过了,失败了。 任何帮助。 感谢你们

如果你真的打开vba,我将使用一个简单的UDF,如:

 Function HeatherNames(rg As Range, rf As String) As String For Each cell In rg If cell = rf Then HeatherNames = HeatherNames & Cells(1, cell.Column).Value & "-" Next cell HeatherNames = Left(HeatherNames, Len(HeatherNames) - 1) End Function 

你可以在列E'= HeatherNames(A2:D2;“n”)中使用它,现在你可以select参数arg.1(范围)和types(或引用另一个单元格)arg.2

假设你有Excel 2010或更高版本,在E2中:

=IF(COLUMNS($A:A)>COUNTIF($A2:$D2,"n"),"",INDEX($1:$1,AGGREGATE(15,6,COLUMN($A2:$D2)/($A2:$D2="n"),COLUMNS($A:A))))

根据需要向右和向下复制。

它实际上会更有效一些(当然,如果你的数据集实际上是相当大的),使得初始的IF子句保持在它自己的单元格中,这样每个行只计算一次,而不是每个公式的实例在那一行。 所以在E2中更好的设置是:

=COUNTIF($A2:$D2,"n")

复制下来。 那么在F2中:

=IF(COLUMNS($A:A)>$E2,"",INDEX($1:$1,AGGREGATE(15,6,COLUMN($A2:$D2)/($A2:$D2="n"),COLUMNS($A:A))))

复制到右边再下来。

问候