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) ) )