Excel:在多个列中查找值并返回标题列

时间:2016-07-21 20:26:29

标签: excel excel-vba excel-formula vba

我正在努力寻找一种方法来寻找"未知"多列的值。当它出现时,我想将值出现的所有标题列返回到B列中每行的一个单元格中。

例如对于第2行(标题行下面的第一行),我希望它返回每个列名称" Unknown"仅从第F列到第Y列出现第2行,并将列名称放在B2中。我想为我所有的9064行重复这个过程。

我正在使用Excel 2010.我查找匹配索引,但无法找到办法做我想做的事情。有没有办法在多个列中查找值并返回值出现在该行中的每个列标题,并将所有列标题放入一个单元格中?

Data View

1 个答案:

答案 0 :(得分:0)

这是一个自定义功能。首先将以下代码放在常规模块中(Alt + F11>>插入>>模块>>复制/粘贴>> Alt + Q)...

Function AConcat(a As Variant, Optional Sep As String = "") As String
' Harlan Grove, Mar 2002

    Dim Y As Variant

    If TypeOf a Is Range Then
        For Each Y In a.Cells
            AConcat = AConcat & Y.Value & Sep
        Next Y
    ElseIf IsArray(a) Then
        For Each Y In a
            AConcat = AConcat & Y & Sep
        Next Y
    Else
        AConcat = AConcat & a & Sep
    End If

    AConcat = Left(AConcat, Len(AConcat) - Len(Sep))

End Function

然后在AA2中输入以下公式,使用CONTROL + SHIFT + ENTER确认,然后复制:

=SUBSTITUTE(AConcat(IF(LEFT(F2:Y2,3)="Unk",", "&$F$1:$Y$1,"")),", ","",1)
相关问题