我想将单元格值从一个工作簿复制到另一个工作簿,但问题是单元格值来自工作簿的不同工作表。我怎样才能做到这一点?你能帮我解决这个问题吗?
2 回答
我猜你想要一个公式,而不是复制和粘贴的说明。
可以使用以下格式进行单元格引用。
=[Workbook Name]SheetName!CellAddress
例如,您打开了两个工作簿,Book1 和 Book2。
Book1,Sheet1,单元格 A1 ==[Book2]Sheet1!A1
Book2,Sheet1,单元格 A1 =Hello World
的值现在将是“Hello World”(如果书是打开的,[Book1]Sheet1!A1
它将始终反映 中的值)[Book2]Sheet1!A1
如果您确实想要实际值的副本,而不是对其的引用,则只需使用纯复制和粘贴或使用上述公式,完成后使用复制+粘贴特殊(粘贴值)进行转换公式到它们的值。
更新
刚刚意识到它被标记为excel-vba所以你需要使用类似@DavidZemens 的答案。
您也可以使用宏记录器来执行此操作,但是像 David 建议的那样手动执行会产生更好的代码,以后更容易重用/修改。
这是您需要的基本内容,您可以通过循环单元格范围、工作簿中的工作表等做更多事情,但从根本上讲,您需要在 VBA 中指定目标工作簿、工作表和单元格范围是什么,然后将其设置为.Value
等于.Value
另一个工作簿中的特定工作簿/工作表/单元格。
我在此示例中使用 Workbook 和 Worksheet 变量,如果您愿意或需要应用于多个单元格,您也可以为单元格使用范围变量。
Sub TransferValues()
Dim wb1 as Workbook
Dim wb2 as Workbook
Dim ws1 as Worksheet
Dim ws2 as Worksheet
Set wb1 = Workbooks("First Workbook.xlsx") '<modify as needed'
Set ws1 = wb1.Sheets("The sheet name") '<modify as needed'
Set wb2 = Workbooks("Another Workbook.xlsx") '<modify as needed'
Set ws2 = wb2.Sheets("Another sheet name") '<modify as needed'
'This line puts the value from wb1.ws1 in wb2.ws2, cells specified:
ws2.Range("A1").Value = ws1.Range("A1").Value
End Sub