我正在尝试将多个工作簿中的所有数据复制到一个工作簿中,并将它们分发到不同的工作表中。
如何更改下面的代码以自动选择带有值的最后一行和列的数据并复制它们而不是声明范围?
For i = 16 To ws.Range("I" & Rows.Count).End(xlUp).Row 'Sheet1 is MasterSheet
File = ws.Range("C" & i) & ws.Range("I" & i) 'File Location and Excel Name
Copy = ws.Range("U" & i) & ":" & ws.Range("V" & i) 'Range to be copied
Workbooks.Open File, 0, 1 'Open File as Read Only
Range(Copy).Copy
ThisWorkbook.Sheets(ws.Range("W" & i).Value).Cells(Rows.Count, 1).End(xlUp)(2).PasteSpecial 12 'Paste as Values only
ActiveWorkbook.Close False 'Close WorkBook without saving
Selection.Value = Selection.FormulaR1C1 'Force F2 and Enter selected range
Range("A1").Select
Next i
答案 0 :(得分:0)
你的解决方案很好,Paolo。我前段时间对这个主题做了很多研究,我发现这些方法是最快最简单的方法。我不认为Excel对这些东西非常好,所以我总是试着坚持基础。
只有两条评论:
我不会使用.UsedRange.Copy
,因为它会返回使用曾的单元格范围。
我也会尽量避免使用.select
。您可以找到有关如何避免它的示例
How to avoid using Select in Excel VBA