Excel:执行从一个工作表到另一个工作表的批量数据拉取,但仅限于某些列

时间:2014-11-10 19:15:23

标签: excel vba excel-vba

是否有内置的方法来完成这样的事情,或者使用VBA等聪明的方式?

例如,假设我在Sheet1上。我希望能够说"好的,从这个源表开始粘贴Sheet 1上的数据(无论如何),但仅从这些列"。

因此,例如在工作表1上,我们有A列,B列和C列,其中包含"名称,ID,类型"工作表1中的数据,从第5行开始 - 其数据来自Sheet2,D列,H,K列(该数据从第7行开始)。

现在我几乎只是按行进行原始VBA迭代并复制值,但我必须对许多不同的数据源和列执行此类过程,因此它变得混乱而且我不会不知道是否有更聪明的方法来做到这一点。

2 个答案:

答案 0 :(得分:0)

为什么不复制整个范围而不是单个单元格(1000只是一个例子):

Sub DoTheJob()
    Copy Sheet2.Range("D7"), Sheet1.Range("A5"), 1000, 1
    Copy Sheet2.Range("H7"), Sheet1.Range("B5"), 1000, 1
    Copy Sheet2.Range("K7"), Sheet1.Range("C5"), 1000, 1
End Sub

Sub Copy(from As Range, toRange As Range, rows As Integer, columns As Integer)
    Range(from, from.Offset(rows, columns)).Copy Destination:=toRange
End Sub

<强>更新 对于不同工作簿之间的复制,请使用以下内容:

Set sheetFrom = Workbooks("Book1.xlsm").Sheets("Sheet2")
Set sheetTo = Workbooks("Book2.xlsx").Sheets("Sheet1")
Copy sheetFrom.Range("D7"), sheetTo.Range("A5"), 1000, 1

(当然两个工作簿都必须在之前打开)

答案 1 :(得分:0)

我没有足够的声誉来评论Fratyx的答案,所以我必须这样添加它。我相信你可以使用

而不是这种方法中的1000
 Sheet2.UsedRange.Rows.Count 

从第7行获取第1行中数据的所有内容。