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

时间:2015-12-01 08:28:30

标签: excel vba excel-vba

我需要在表格中获取与特定值相关联的多个列名称(标题)

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

enter image description here 我用了公式

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

这里。但它只提供一个列名。

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

2 个答案:

答案 0 :(得分:1)

如果你真的对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”)列中使用它,现在你可以选择arg.1(范围)和类型(或指另一个单元格)arg.2

答案 1 :(得分:0)

假设你有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))))

再次向右复制。

此致