我有以下"表"在Excel工作表中。我想做以下改变:
每次有" x"我想在另一张表上报告第一行的相应值和第一列的相应值:
"原始表"
a1 a2 a3 a7 a8 a9
main main main main main main
u1 X X X
u2 X X
u3
u4
u5 X
u6 X
"转换表":
u1 a1
u1 a2
u1 a3
u2 a2
u2 a3
u5 a1
u6 a3
您能否告诉我将执行此操作的Excel宏是什么?
提前谢谢。
答案 0 :(得分:1)
这假定表(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)上的单独单元格中生成行和列值。
答案 1 :(得分:0)
我知道这是Excel VBA问题,内置公式无法完成。在Google表格中,您只需使用内置功能即可实现此目的。当“a1”在B1
上且“u1”在A3
上时,您只需使用一个公式即可获得该表格。样本表为here。
=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)
)
)