通过提供环境variablespath,将excel表格的单元格值与另一个excel表格相关联

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

Test.xlsx

第二个:

Sample.xlsx

我使用以下公式将Test.xlsx中的B10单元格值与Sample.xlsx的C10值进行比较:

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

在Test.xlsx文件的B10中。

任何人都可以build议我如何replace公式中的目标文件的硬编码path:

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

环境variables“Temp”的值为"C:\Users\Happy\Desktop\Work"

谢谢。

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

假设您的临时path存储在单元格E1中。 在B10上input:

 =INDIRECT(E1&"!C10") 

当然,您可以使用Temp而不是E1。 只要命名E1细胞(或任何你想要的其他细胞)温度,并改变公式:

 =INDIRECT(Temp&"!C10") 
  • 点击单元格名称并在左上angular的框中更改名称 在这里输入图像说明

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

 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()函数用于扩展环境variablesstring,例如:

  • 环境variables: %USERPROFILE% | 返回:(C:\ Users \ [用户名])
    • VBA Environ("USERPROFILE") | 返回:(C:\ Users \ [用户名])
  • 环境variables: %APPDATA% | 返回:( C:\ users \ [用户名] \ AppData \ Roaming)
    • VBA Environ("APPDATA") | 返回:( C:\ users \ [用户名] \ AppData \ Roaming)