我需要根据一行中单元格的值从表中返回多个列标题

时间:2015-10-02 13:29:15

标签: excel vba

我在Excel中有一个表,设置如下; tABLE LAYOUT

我需要做的是,在另一张纸上,根据选择了人名的下拉框的值(即测试1,测试2等等),对表执行查找,并在下拉列表旁边的单元格中返回单元格中的值为Y的标题。

例如,根据上表,如果从下拉列表中选择了测试1,则返回的值应为

  

技能1,技能4

对此的任何建议都将非常感激。我试图按照this post上的答案中的说明进行操作但未成功。

1 个答案:

答案 0 :(得分:1)

尝试以下 UDF()

Public Function GetHeaders(r1 As Range, r2 As Range) As String
   Dim r As Range, s As String, rr As Range, rTOP As Range
   GetHeaders = ""
   s = r1.Text
   Set rTOP = r2.Rows(1).Cells

   For Each r In r2.Columns(1).Cells
      If r.Value = s Then
         For Each rr In Intersect(r.EntireRow, r2).Cells
            If rr.Value = "Y" Then
               GetHeaders = GetHeaders & "," & Intersect(rr.EntireColumn, rTOP).Value
            End If
         Next rr
      End If
   Next r
   GetHeaders = Mid(GetHeaders, 2)
End Function

因此,使用 Sheet1 中的数据,将下拉列入 Sheet2 单元格 B1 Sheet2 单元 A1 输入:

=GetHeaders(B1,Sheet1!A1:F5)

enter image description here

注意:我们传递整个表格,包括标题行/列。