从列行匹配创建列表

时间:2016-03-23 18:21:29

标签: excel vba excel-vba

我有一个表,第一行是列标题,第一列是行标签。我已将TRUE放在这些匹配的每个单元格中。

我需要在每个列的单独工作表中生成一个列表,仅包含单元格为TRUE的匹配行名称。

因此,如果sheet1中的B13B15C12TRUE,则sheet2将显示B13和{ {1}}下面有{1}},下面有15C。除了使用我输入的标签,而不是字母和数字。

我还没有设法绕过这个从哪里开始,所以任何正确方向的指针都会受到赞赏。

我已尝试为列标题和行标签创建已定义的名称。

1 个答案:

答案 0 :(得分:3)

我不完全理解你的表的布局,但假设它看起来像我测试的下面的例子,这个VBA应该可以工作。

Sheet1表格式

enter image description here

Sheet2输出结果

enter image description here

<强> VBA

Sub test()

Dim i As Long
Dim j As Long
Dim lRow As Long
Dim lCol As Long
Dim ws1 As Worksheet
Dim ws2 As Worksheet

Set ws1 = Sheets("Sheet1")
Set ws2 = Sheets("Sheet2")
lRow = ws1.Cells(ws1.Rows.Count, 1).End(xlUp).Row
lCol = ws1.Cells(1, ws1.Columns.Count).End(xlToLeft).Column

With ws1

    For j = 2 To lCol
    ws2.Cells(1, j).Value = .Cells(1, j).Value

        For i = 2 To lRow

            If .Cells(i, j).Value = True Then

                ws2.Cells(ws2.Rows.Count, j).End(xlUp).Offset(1, 0).Value = .Cells(i, 1).Value 'This will probably need to be changed to 'i' to represent the row number for your purposes

            End If

        Next i

    Next j

End With

End Sub