使用宏组织Excel工作表

时间:2017-08-23 07:38:29

标签: excel vba excel-vba

我有一张非常大的Excel表格,有2000行。

在表格中我有名字,旁边有很多名字" NO"和一个"是"。

每列都有不同的名称。

我想要一个宏,它会自动给我一张带有名称的表格,并在名称旁边是我有一个" YES"。

的列名。

例如:

Name     A    B    C    D
God      NO   NO   YES  NO
Gosch    YES  NO   NO   NO
Josch    NO   YES  NO   NO
ME       NO   NO   YES  NO

应该是这样的:

姓名

God    C
Gosch  A
Josch  B
ME     C

1 个答案:

答案 0 :(得分:3)

试试这个:

Sub Demo()
    Dim srcSht As Worksheet, destSht As Worksheet
    Dim lastRow As Long, i As Long

    Set srcSht = ThisWorkbook.Sheets("Sheet3")  'change Sheet3 to your data sheet
    Set destSht = ThisWorkbook.Sheets("Sheet4") 'change Sheet4 to your output sheet

    With srcSht
        lastRow = .Cells(.Rows.Count, "A").End(xlUp).row    'last row in source sheet using column A
        destSht.Cells(1, 1) = "Name"
        destSht.Cells(1, 2) = "Column"
        For i = 2 To lastRow
            destSht.Cells(i, 1) = .Cells(i, 1)      'enter name in output sheet
            destSht.Cells(i, 2) = .Evaluate("=INDEX($B$1:$E$1,1,MATCH(""YES"",B" & i & ":E" & i & ",0))")   'enter column name in output sheet
        Next i
    End With
End Sub

您可以使用以下公式轻松完成此操作 在Cell G2

中输入以下公式
=INDEX($B$1:$E$1,1,MATCH("YES",B2:E2,0))

根据需要拖动/复制。见图片以供参考。

enter image description here