我需要在表格中获取与特定值相关联的多个列名称(标题)
正如我解释的那样,我需要将与值“n”对应的标题名称添加到E列。
=INDEX((A$1:D$1),MATCH("n",A2:D2,0))
这里。但它只提供一个列名。
我也对vba脚本开放。但我认为它不需要vba。只是改进上面的公式,可能是。我尝试过但失败了。任何帮助。谢谢你们
答案 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))))
再次向右复制。
此致