0

我想将单元格值从一个工作簿复制到另一个工作簿,但问题是单元格值来自工作簿的不同工作表。我怎样才能做到这一点?你能帮我解决这个问题吗?

4

2 回答 2

3

我猜你想要一个公式,而不是复制和粘贴的说明。

可以使用以下格式进行单元格引用。

=[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

如果您确实想要实际值的副本,而不是对其的引用,则只需使用纯复制和粘贴使用上述公式,完成后使用复制+粘贴特殊(粘贴值)进行转换公式到它们的值。

更新

刚刚意识到它被标记为所以你需要使用类似@DavidZemens 的答案。

您也可以使用宏记录器来执行此操作,但是像 David 建议的那样手动执行会产生更好的代码,以后更容易重用/修改。

于 2013-04-14T13:40:33.527 回答
3

这是您需要的基本内容,您可以通过循环单元格范围、工作簿中的工作表等做更多事情,但从根本上讲,您需要在 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
于 2013-04-14T13:48:24.067 回答