首页 > 解决方案 > 动态引用外部工作表时连接格式

问题描述

我正在尝试编写一些代码来自动化我们在我公司执行的超过 64 个电子表格的搜索,每个电子表格有 6 个子工作表。由于典型的大公司“左手右手”问题以及严格的政策,合并电子表格不是一种选择。因此,我正在查看一个电子表格,该电子表格在所有电子表格中搜索给定的企业名称,但是在创建到每个单独的电子表格和子工作表的直接链接时,我正在尝试动态生成子工作表。

直接链接到电子表格的代码:使用 SumProduct:

=SUMPRODUCT(--('\\samnedfsn1\common\Exception - Frequent Access Spreadsheets\Customer Services\Irregularities spreadsheets\2017-18 irregularities spreadsheets\[YH Irregularities Spreadsheet 2017-18.xlsx]Irregularities'!$A:$A=J5))

使用 VLookup:

=(IFERROR(IF(VLOOKUP(J5,'\\samnedfsn1\common\Exception - Frequent Access Spreadsheets\Customer Services\Irregularities spreadsheets\2017-18 irregularities spreadsheets\[YH Irregularities Spreadsheet 2017-18.xlsx]Irregularities'!$A:$A,1,FALSE)=J5,"Yes","No"),"No"))

在本例中,“J5”指的是用于搜索的单元格(在本例中为“Megginson”,搜索运行良好。

直接链接 - 代码工作

但是,当尝试动态生成链接时,我一直在尝试连接地址,以便可以动态生成对子表的引用。这是我用于 SumProduct 尝试生成它的代码:

=SUMPRODUCT(--("'\\samnedfsn1\common\Exception - Frequent Access Spreadsheets\Customer Services\Irregularities spreadsheets\2017-18 irregularities spreadsheets\[YH Irregularities Spreadsheet 2017-18.xlsx]" & Lists!A2:A7 & "!$A:$A=" & $J$5  ))

(注意:对于任何进一步的截图,'Lists!A2:A7' 将是 'Lists!:A2' 以提高可读性)

但是,此代码会生成 #value 错误。现在,根据公式评估框,代码正在将工作表的链接生成为数组,因此可以正常工作。这是评估框在生成 #value 错误之前显示的内容:

sumproduct 不工作 - 1

现在我注意到末尾的“megginson”部分似乎丢失了引号,我认为这可能是原因,所以我将 SumProduct 代码的末尾修改为:

"!$A:$A=" & CHAR(34) & $J$5 & CHAR(34)

但这就是在生成错误之前评估所显示的内容

sumproduct 不工作 - 2

现在看来,最后的引号太多了。我尝试了在 J5 引用周围添加引号的各种组合,但没有一个能解决问题。

我还尝试改用 VLookup,使用此代码动态生成链接:

=VLOOKUP(J5,"\\samnedfsn1\common\Exception - Frequent Access Spreadsheets\Customer Services\Irregularities spreadsheets\2017-18 irregularities spreadsheets\[YH Irregularities Spreadsheet 2017-18.xlsx]" & "Irregularities!" & "$A:$A",1,FALSE)

这也会产生相同的#value 错误。

这是 VLookup 失败前的公式评估

不工作 - VLookup

这真的让我很困惑,因为我在功能上看不出直接链接到不规则电子表格的代码和尝试动态生成链接的代码之间的输出之间的任何区别,除了引号的存在(其中我假设公式评估时消失?)。

直接链接(在返回结果之前评估到步骤的公式):

=VLOOKUP("Megginson ",'\\samnedfsn1\common\Exception - Frequent Access Spreadsheets\Customer Services\Irregularities spreadsheets\2017-18 irregularities spreadsheets\[YH Irregularities Spreadsheet 2017-18.xlsx]Irregularities'!$A:$A,1,FALSE)

动态链接(公式评估为失败前的步骤):

=VLOOKUP("Megginson ", "'\\samnedfsn1\common\Exception - Frequent Access Spreadsheets\Customer Services\Irregularities spreadsheets\2017-18 irregularities spreadsheets\[YH Irregularities Spreadsheet 2017-18.xlsx]Irregularities'!$A:$A",1,FALSE)

现在我认为问题在于尝试通过连接生成外部工作表引用,但是我完全不知道如何修改代码以便正确生成链接(假设这是出了什么问题)。如果有人可以通过告诉我出了什么问题来帮助我,我将非常感激。

干杯!

标签: excelexcel-formulaexcel-2013worksheet-functionworksheet

解决方案


我相信,Excel 的INDIRECT()功能可用于此类目的 - 它返回引用,您可以通过连接 ( &) 您的文件名/路径和选项卡名称来弥补。


推荐阅读