用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 G2input以下公式

 =INDEX($B$1:$E$1,1,MATCH("YES",B2:E2,0)) 

根据需要拖放/复制。 看图像以供参考。

在这里输入图像说明