我在下面编写的代码将其他工作簿中的数据复制粘贴到第一列中,之后没有任何内容。因此,我的宏只会将数据粘贴到后面只有空列的第一列中,但是,我尝试将此数据粘贴到后面可能有数据的列中。如何为要进入的数据分配起始列,然后下一个工作簿中的以下数据进入下一列?例如,我要从中导入数据的 20 个文件,我希望它们从工作表的 E 列开始粘贴,并继续粘贴到下一个连续列。另外,我正在复制的某些项目可能有空白单元格,我希望它们粘贴为“0”。
Sub Avg_Rate_Changes_Import()
Dim FileNameXls, f
Dim wb As Workbook, I As Integer
FileNameXls = Application.GetOpenFilename(filefilter:="Excel Files, *.xl*", MultiSelect:=True)
If Not IsArray(FileNameXls) Then Exit Sub
Application.ScreenUpdating = False
For Each f In FileNameXls
Set wb = Workbooks.Open(f)
For I = 1 To 1
wb.Worksheets("Avg Rate Changes").Range("G9:G21").Copy
lastColumn = ThisWorkbook.Sheets("Avg Rate Changes ").Cells(4, Columns.Count).End(xlToLeft).Column
Set pasteRange = ThisWorkbook.Sheets("Avg Rate Changes").Cells(4, lastColumn + 1)
pasteRange.PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd, SkipBlanks:=False, Transpose:=False
With ThisWorkbook.Sheets("Avg Rate Changes")
Set pasteRange = .Range(.Cells(4, lastColumn + 1), .Cells(16, lastColumn + 1 + 6))
pasteRange.Replace What:="", Replacement:="0", LookAt:=xlWhole
End With
Next I
wb.Close SaveChanges:=False
Next f
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
在有
set pasteRange
的地方,您可以使用循环内的移动列来定义范围,例如:
'outside of loop
dim colNum as long: colNum = 5
'inside of loop
dim pasteRange as range: set pasteRange = ThisWorkbook.Sheets("Avg Rate Changes").Cells(1,colNum)
pasteRange.PasteSpecial
colNum = colNum + 1
这会将复制到列中第一个单元格中的所有内容粘贴到其总使用行中。
将
replace
移出循环,这样所有需要更改的事情都会在之后立即发生。