首页 > 解决方案 > 在 Excel 中从一个工作簿复制到另一个工作簿并将单元格数据复制到另一个工作簿

问题描述

我需要在第二个工作簿上找到一个特定的单元格并返回它的值。我的范围总是在变化,但我可以过滤掉不好的值。我需要从一个工作簿复制到另一个工作簿的单元格(MCN #)正在改变其格式。

有时它是单行,有时它合并超过 7 行左右。我拥有的代码是:

=HLOOKUP("MCN #",[CuPe1810_CH520.xlsx]CuPe1820_CH520!$A$1:$S$16,2,FALSE)

我正在从链接的工作簿中寻找“MCN #”,并返回我在主工作簿上分配给它的行值 (B3)。

我需要从用户输入值更改 [CuPe1810_CH520.xlsx],并且我需要将选项卡或范围 (CuPe1820_CH520!$A$1:$S$16) 更改为相同的名称减去 .xlsx 所以在我的示例中CuPe1820_CH520 将代表一个选项卡名称和一个 .xlsx 名称。我需要帮助才能根据用户输入使其工作,并且可以完成公式或宏,我不在乎。

标签: excel

解决方案


你可以做这样的事情。

在下面的示例中,F1(或$F$1短代码)是您正在编辑以更新公式的单元格。

A1是我们正在更新的单元格公式。

如果您需要更新多个单元格,则可以循环遍历它们For Each,也可以使用该Range("SomeRange").AutoFill Destination:=Range("SomeDestination")函数。

Application.ActiveWorkbook.Path在您的情况下可能需要更新 - 指向文件的路径。

这进入您的工作表对象(Worksheet_Change事件)。

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$F$1" Then
    'Range to update formula goes here
    Range("A1").Formula = "='" & Application.ActiveWorkbook.Path & "\[" & [F1] & ".xlsx]" & [F1] & "'!A1"
End If
End Sub

在上面的示例中,您不需要.xlsx输入输入字符串。


推荐阅读