通过给出环境变量路径,将excel表的单元格值与另一个excel表一起引用

时间:2015-10-26 11:03:29

标签: excel excel-formula

我有两个excel工作表, 第一个是:

  

Test.xlsx

和第二个:

  

Sample.xlsx

我使用以下公式将Test.xlsx中的B10单元格值与Sample.xlsx的C10一起引用:

='C:\Users\Happy\Desktop\Work[Sample.xlsx]Sheet1'!C10 

在Test.xlsx文件的B10中。

任何人都可以建议我如何在公式中替换目标文件的硬编码路径:

("C:\Users\Happy\Desktop\Work")

环境变量" Temp"值"C:\Users\Happy\Desktop\Work"

谢谢。

3 个答案:

答案 0 :(得分:0)

假设您的临时路径存储在单元格E1上。在B10上输入:

=INDIRECT(E1&"!C10")

当然,您可以使用名称Temp而不是E1。只需将E1单元格(或您想要的任何其他单元格)命名为Temp并将公式更改为:

=INDIRECT(Temp&"!C10")
  • 要命名单元格,请单击它并在左上方的框中更改名称enter image description here

答案 1 :(得分:0)

我有2个文件:Book1.xlsx和Book2.xlsx 转到Book2.xlsx和特殊单元格并输入" =[Book1.xlsx]Sheet1!$A$5"例如。 当您更改Book1.xlsx.A5中的值并保存时,Book2.xlsx将生效。

答案 2 :(得分:0)

您需要使用VBA来扩展环境变量。如果文件夹始终在用户的桌面上,那么这样的东西就足够了。将其放入工作簿中的标准代码模块中:

Public Function GetEnviron(strEnv As String, Optional folderAppend As String = vbNullString) As String

    If Not folderAppend = vbNullString Then
        folderAppend = folderAppend & IIf(Right(folderAppend, 1) = "\", vbNullString, "\")
    End If

    GetEnviron = Environ(UCase(strEnv)) & "\" & folderAppend

End Function

在您的电子表格中使用如下:

=INDIRECT("'"&GetEnviron("USERPROFILE","Desktop\Work\")&"[Sample.xlsx]Sheet1'!C10")

VBA中的Environ()函数用于扩展环境变量字符串 - 例如:

  • 环境变量:%USERPROFILE% |返回:(C:\ Users \ [username])
    • VBA Environ("USERPROFILE") |返回:(C:\ Users \ [username])
  • 环境变量:%APPDATA% |返回:(C:\ users \ [username] \ AppData \ Roaming)
    • VBA Environ("APPDATA") |返回:(C:\ users \ [username] \ AppData \ Roaming)