将数据复制到最后一行和列

时间:2017-10-26 11:12:33

标签: excel vba excel-vba

我正在尝试将多个工作簿中的所有数据复制到一个工作簿中,并将它们分发到不同的工作表中。

如何更改下面的代码以自动选择带有值的最后一行和列的数据并复制它们而不是声明范围?

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

1 个答案:

答案 0 :(得分:0)

你的解决方案很好,Paolo。我前段时间对这个主题做了很多研究,我发现这些方法是最快最简单的方法。我不认为Excel对这些东西非常好,所以我总是试着坚持基础。

只有两条评论:

  • 我不会使用.UsedRange.Copy,因为它会返回使用的单元格范围。

  • 我也会尽量避免使用.select。您可以找到有关如何避免它的示例 How to avoid using Select in Excel VBA