Excelmacros从一个表/数组中select值到另一个

我有一个Excel表中的以下“表”。 我想做以下的改变:

每当有一个“x”的时候,我想在另一张纸上报告第一行的相应值和第一列的相应值:

“原始表”

a1 a2 a3 a7 a8 a9 main main main main main main u1 XXX u2 XX u3 u4 u5 X u6 X 

“转换表”:

  u1 a1 u1 a2 u1 a3 u2 a2 u2 a3 u5 a1 u6 a3 

你能告诉我什么是Excelmacros将这样做?

先谢谢你。

这假定表(2)存在(即不检查)。 它会填充表(2)的行和列标题,如你在你的例子中给出的:

 Sub ReportOnAllXs() Dim r As Integer, c As Integer, r2 As Integer r2 = 1 With Sheets(1) For r = 3 To .Cells(.Rows.Count, "A").End(xlUp).row For c = 2 To .Cells(1, .Columns.Count).End(xlToLeft).Column If .Cells(r, c).Value = "X" Then Sheets(2).Cells(r2, 1).Value = .Cells(r, 1).Value Sheets(2).Cells(r2, 2).Value = .Cells(1, c).Value r2 = r2 + 1 End If Next Next End With End Sub 

我还假设你想在表(2)的单独的单元格中产生的行和列的值。

我知道这是Excel VBA的问题,它不能用内置的公式来完成。 在Google表格中,只能使用内置函数来实现此function。 当B1上的'a1'和A3上的'u1'时,只用一个公式就可以得到表格。 示例表在这里 。

 =transpose( split( concatenate( arrayformula( if(B3:G8="x", "u"&(row(B3:G8)-row($A$3)+1)&" a"&(column(B3:G8)-column($B$1)+1)&char(10), "") ) ), char(10) ) ) 

在这里输入图像说明