VBA代码来select特定的单元格并相应地粘贴

我想从Excel工作簿中的所有工作表中select特定的单元格,然后粘贴到主表单中。 问题是我没有从创build的代码中得到这个,我得到一个错误,但是如果我现在离开它(如下所示),我得到它的特定单元格,然后我必须进入代码更改单元格以及我想要输出到的位置 我为了我的天真提前道歉。

就像现在

Sub CopyIt() Dim ws As Worksheet Application.ScreenUpdating = False For Each ws In ActiveWorkbook.Worksheets If ws.Name <> "Masters" Then ws.Range("B18").Copy Sheets("Masters").Cells(Rows.Count, "Q").End(xlUp).Offset(1) End If Next Application.ScreenUpdating = True End Sub 

我想把这个单元格范围"B2-B18"复制到"A:Q"和主表单中。 所以B2中的值转到A列等等,然后在B18的末尾转到Q

我为什么不做代码来做它应该做的事情?

嘿,我只是testing这个,它应该为你做的伎俩

 Sub CopyIt() Dim pasteRow As Integer Dim ws As Worksheet Application.ScreenUpdating = False pasteRow = 2 For Each ws In ActiveWorkbook.Worksheets If ws.Name <> "Masters" Then ws.Range("B2", "B18").Copy Sheets("Masters").Range("A" & pasteRow).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True pasteRow = pasteRow + 1 End If Next Application.ScreenUpdating = True End Sub 

这将为每个工作表推进一行,以便您可以添加尽可能多的工作表。 请注意,这实际上不是最普遍的代码,你需要改变ws.Range("B2", "B18").copy到select说,某个列中的所有范围,或者你将不得不手动每次你想改变它的时候扩大范围。

尝试:

 ws.Range("B1:B18").Copy Sheets("Masters").Cells(Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True 

这应该复制B1:B18,将它从列转置为行,并将其粘贴到Masters表的A列的最后一行。

启用开发工具栏
selectlogging一个macros
在一张表中selectb2:b18select另一张表格并右键单击粘贴全部并select转置
停止录制macros
现在编辑macros以满足您的要求

一个样本macros自动生成的代码如下

 Sub Macro1() ' ' Macro1 Macro ' ' Range("B2:B18").Select Selection.Copy Sheets("Sheet2").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True End Sub 

这应该做必要的…(这将复制粘贴值从B2:B18单元格在每张表中不同的行在表“主”)

Sub Macro1()

 Dim ws As Worksheet Dim row_count As Integer row_count = 1 For Each ws In ActiveWorkbook.Worksheets MsgBox ws.name If ws.name <> "Masters" Then ws.Activate Range("B2:B18").Select Selection.Copy Sheets("Masters").Activate Range("A" & row_count).Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Application.CutCopyMode = False row_count = row_count + 1 End If Next 

结束小组