用macros组织一个Excel工作表
我有一个非常大的Excel表2000行。
在工作表中,我名字旁边有很多“NO”和一个“YES”。
每列都有不同的名字。
我想有一个macros,它自动给我一张名单,并在名称旁边有一个“是”的列名称。
例如:
Name ABCD 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
尝试这个:
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
input以下公式
=INDEX($B$1:$E$1,1,MATCH("YES",B2:E2,0))
根据需要拖放/复制。 看图像以供参考。