我目前正在尝试弄清楚如何制作一个宏(按钮),从我的工作表中的所有标签中收集特定信息并将其粘贴到我的摘要标签中。这是一个例子:
工作表#1 =“Cric”
Cell A1 = 1 Cell A2 = 2 Cell A3 = 3
工作表#2 =“Crac”
Cell A1 = 4 Cell A2 = 5 Cell A3 = 6
工作表#3 =“Croc”
Cell A1 = 7 Cell A2 = 8 Cell A3 = 9
这就是我想要做的事情:在我的摘要单元格中,我想创建一个按钮,当我点击它时会自动收集摘要旁边所有选项卡中单元格A1 / A2 / A3中的信息,然后将其复制到我的摘要工作表到A1; B1; C1 ... Ax; Bx; Cx。另请注意,摘要旁边的选项卡名称可能会更改,因为我将在各种项目中使用此Excel工作表。
过去我有过30个工作表的项目,所以我绝对需要这个宏来节省时间!!
工作表#4 =“摘要”
Cell A1 = 'Cric'!A1 ; Cell B1 = 'Cric'!A2 ; Cell C1 = 'Cric'!A3
Cell A2 = 'Crac'!A1 ; Cell B2 = 'Crac'!A2 ; Cell C2 = 'Crac'!A3
Cell A3 = 'Croc'!A1 ; Cell A2 = 'Croc'!A2 ; Cell A3 = 'Croc'!A3
答案 0 :(得分:0)
你的问题很模糊,所以我不知道这会有所帮助。但如上所述,您尝试获取每个工作表的第一个COLUMN中的值,并将它们移动到ROWS到您的摘要表中。因此Cric A1到3成为C1的概要A.这叫做转置。我将假设摘要表是空白的,并且行的顺序将是选项卡的顺序。
sub MakeSummary()
Dim WkSht as Worksheet, R as Integer
R=1
For Each WkSht in Worksheets
If WkSht.Name<>"Summary" Then
WkSht.Range("A1:A3").Copy
Worksheet("Summary").cells(R,1).PasteSpecial transpose:=true
R=R+1
End If
Next WkSht
End Sub
没有测试过,但这应该有效。如果您不想只显示前三行,而是将整个A列移动到摘要表:
sub MakeSummary()
Dim WkSht as Worksheet, R as Integer
R=1
For Each WkSht in Worksheets
If WkSht.Name<>"Summary" Then
WkSht.UsedRange.Columns(1).Copy
Worksheet("Summary").cells(R,1).PasteSpecial transpose:=true
R=R+1
End If
Next WkSht
End Sub
编辑: 您添加了一些细节,表明您感兴趣的数据位于工作表上的S8到U8中。我讨厌这样说,但如果你看不清楚如何调整上面的代码来解决这个问题,我不确定VBA宏对你来说是个好主意,因为你总是想要调整。无论如何,您的数据实际上已经连续(R8到U8是第8行中的5个水平单元格)。所以你不需要转置任何东西。这是你做的:
sub MakeSummary()
Dim WkSht as Worksheet, R as Integer
R=1
For Each WkSht in Worksheets
If WkSht.Name<>"Summary" Then
WkSht.Range("R8:U8").Copy
Worksheet("Summary").cells(R,1).Paste
R=R+1
End If
Next WkSht
End Sub