根据单元格值数据,按路径参考Excel工作簿

根据单元格值数据,按路径参考Excel工作簿,excel,excel-formula,Excel,Excel Formula,我有一个Excel工作表,可以从其他关闭的Excel工作簿中提取数据。目前,当我列出已关闭工作簿的整个路径时,它可以正常工作,但我希望使用存储在单独单元格中的变量作为路径名的一部分 例如,我试图引用一个名为 工作簿12.10.12.xls 在单独的工作簿中,我们称为活动工作簿,我有一个带有公式的单元格 =索引'C:\Path[workbook12.10.12.xls]SHEET1'$B$1:$B$5,匹配文本“C:\Path[workbook12.10.12.xls]SHEET1”$A$1:$A

我有一个Excel工作表,可以从其他关闭的Excel工作簿中提取数据。目前,当我列出已关闭工作簿的整个路径时,它可以正常工作,但我希望使用存储在单独单元格中的变量作为路径名的一部分

例如,我试图引用一个名为

工作簿12.10.12.xls

在单独的工作簿中,我们称为活动工作簿,我有一个带有公式的单元格

=索引'C:\Path[workbook12.10.12.xls]SHEET1'$B$1:$B$5,匹配文本“C:\Path[workbook12.10.12.xls]SHEET1”$A$1:$A$5,0

它在workbook12.10.12的B列中查找与包含匹配文本的A列中的单元格对应的值。这很好用;但是,活动工作簿中有一个单元格的值为

12.10.12

我想在索引函数中引用这个值

我无法打开其他工作簿,因此间接函数没有帮助。谷歌似乎暗示Excel并没有一个简单的一站式解决方案来解决这类问题。。。有人能帮忙吗?谢谢

你可以

Use Laurent Longre开发了包含函数INDIRECT.EXT的免费外接程序 使用SQL.REQUEST作为*似乎不再受支持,我不清楚这是否可以处理您的索引\匹配请求 使用哈兰·格罗夫函数 此外,您还可以:

通过输入引用所需工作簿的公式的代码直接创建脏链接 对于拉取值,但不用于处理范围,可以使用Walkenbach
我认为您要做的是在指定的文件日期中查找特定记录。 您可以通过一个简单的VBA代码来实现

假设您要在单元格C1中搜索记录,比如A1中的REC001,日期文件12.10.12,结果显示在单元格A7

在要输入并获取输出的工作表上,右键单击“工作表”选项卡,选择“查看代码”,然后粘贴以下代码:

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("C1")) Is Nothing Then Exit Sub
Range("A7").Formula = "=INDEX('C:\TEMP\[workbook" & Range("C5").Value & ".xls]SHEET1'!$B$1:$B$5, MATCH(" & Range("A1").Value & ", 'C:\TEMP\[workbook" & Range("C5").Value & ".xls]SHEET1'!$A$1:$A$5, 0))"
End Sub
然后每次编辑C1时,公式都会更新

事实上,我认为你不应该在你的例子中使用索引函数。使用VLOOKUP更简单。例如:

Range("A8").Formula = "=vlookup(" & Range("A1").Value & ",'C:\TEMP\[workbook" & Range("C5").Value & ".xls]SHEET1'!$A$1:$B$5,2,false)"
您必须注意以下几点: 1.将代码粘贴到Sheet1对象或图纸名称上,但不插入新模块 2.目标文件的路径和文件名正确,包括.xls和.xlsx 3.你的原始档案只包括$B$5
4.在VBA上,建议您将文件另存为.xlsm格式

您可以直接或通过VBA,根据不同单元格中的选择,使用上述工作表更改过程,在excel中的名称中存储一个完整的引用,包括封闭文件中某个范围的文件路径,然后使用公式中的名称正常引用该文件。这超越了间接函数的限制

VBA非常简单:

New_Ref=Sheetswels.RangeK6

ActiveWorkbook.NamesMyWorkbook.referesto==&New\u Ref

唯一的诀窍是确保在名称中包含=


一旦你发现了这一点,名字就有了大量的用途。我使用它从远程sharepoint网站上的关闭文件中获取数据,没有任何困难-我假设sharepoint处理所有权限。

谢谢!我一直在调查这件事,你是对的,VLOOKUP似乎是最好的选择。不幸的是,我的Range.Formula返回了一个语法错误,我不确定问题是什么——可能与引号的使用有关吗?我对这个属性不是很熟悉,也没能通过谷歌找到任何关于以这种方式构建公式的东西。我认为我们的方向是正确的,所以谢谢你的帮助!请记住在&之前和之后添加空格。如果公式中有一个,例如你想要公式=ifa1=abc,tr,range.formula是=ifa1=abc,tr对不起,请找出代码中的两个语法错误。更正现在我打开了标签中的所有链接,现在这个会话看起来像一个墓地。也许可以使用网站的缓存版本。