如何在Excel中创建一个包含公式的链接到另一个工作簿?

时间:2018-02-14 11:24:30

标签: excel excel-vba vba

我不确定这在Excel中是否可行,但这是我需要做的事情:

我有一个包含酒店列表的列,然后是另一个列,需要从每个酒店的excel文件中提取数据。例如,单元格A2将具有酒店的名称“Paris”,然后单元格B2将具有链接:

  ='G:\Hotels\Paris\Paris - Monthly\[Paris_summary_2018.xlsm]Feb'!$CD$89

我有很多酒店需要在不同的床单上做这件事。所以我需要链接来动态地引用A列中的任何酒店和表格的标题,例如我可以做这样的事情吗?

=''G:\Hotels\A2\A2 - Monthly\[A2_summary_2018.xlsm]Feb'!$CD$89

其中A2的字符串为“Paris”。还有一种方法可以动态地引用“二月”,这取决于我当月的标题是标题

我也愿意为此使用VBA。

2 个答案:

答案 0 :(得分:0)

我不确定您是否可以使用HYPERLINK

像这样:

=HYPERLINK("G:\Hotels\"&A2&"\"&A2&" - Monthly\["&A2&"_summary_2018.xlsm]Feb!"&$CD$89)

答案 1 :(得分:0)

只要您不介意使用VBA,就可以轻松生成具有以下内容的链接:

Sub generate_hotel_links()
    Dim r As Range, c As Range
    Dim s As String
    ' This is the range which all the hotel-locations are in
    Set r = ThisWorkbook.Worksheets("Sheet1").Range("A1:A10")
    On Error Resume Next
    For Each c In r
        ' Generate the formula based on the current cell we are in
        s = "=" & Chr(39) & "G:\Hotels\" & CStr(c) & "\" & CStr(c) & " - Monthly\[" & CStr(c) & "_summary_2018.xlsm]Feb" & Chr(39) & "!$CD$89"
        ' ...and put it in the neighbouring cell
        c.Offset(0, 1).Formula = s
    Next c
    On Error Goto 0
End Sub

On Error Resume Next无论出现什么错误都会使宏继续 - 理想的情况是一些更强大的错误处理,或者在尝试编写公式之前检查工作簿/工作表是否实际存在,但是如果您觉得需要改进宏,我会留给您试图写这个。

如果您只想使用通用的Excel公式,我建议您查看我在您的问题的评论中发布的问题和答案。