在Excel中引用来自INDEX()的链接文件(Office 365)

时间:2017-10-16 14:02:59

标签: excel excel-formula

我收集了大约40个Excel工作表。它们存储有关人们在不同项目上工作的小时数的信息,其中日期从左到右排在第一行,项目名称从第一列开始。团队的每个成员都有自己独立的工作表。

我正在制作一个新工作表,它会累计每个人在特定项目上花费的小时数。

我正在使用此公式将所有数字添加到链接文件的特定范围内:

SUM(INDEX('S:\path\to\folder[Username_2017.xlsx]Daily'!G:JG,JOB_ROW,0))

JOB_ROW是包含我想要添加的数字的行。专栏G:JG封面1月1日 - 12月31日。对于40人中的每一人,Username_2017.xlsx都不同。

问题是该公式仅在我手动创建时才有效。我找不到任何方法来使用文件名的动态引用,这对于引用40多个文件非常繁琐。我认为这可能有用:

SUM(INDEX(INDIRECT(C3),JOB_ROW,0))

...其中C3,C4,C5等将包含自动生成的文件名和引用。但它不起作用。我得#REF!并且Excel不会提示我链接文件 - 这告诉我它永远不会以这种方式工作。

我还发现即使电子表格与手动输入的公式一起正常工作,如果我保存并重新打开它,那么Excel会尝试通过剥离公式并用文本替换它们来提供帮助# REF!

我可以做我想做的事吗?或者我需要学习一些VBA吗?

我应该指出,到目前为止,我在很大程度上避免在我的职业生涯中使用Excel - 所以如果有更好的方法来实现这一点,那么我很乐意听到它。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

ian0411在上面的评论中给出了这个问题的简单答案:答案是“你做不到”。

如果他想发帖,那么我会接受它作为答案 - 但是为了其他人阅读这个问题并寻找其他选择的好处,这是我尝试过的和有效的方法:

VBA

我使用GetObject()编写了一些非常简单的VBA来打开和读取每个工作簿。它工作,但a)它非常慢,并且b)只要Excel运行它似乎保持所有文件打开,这导致其他问题。它也崩溃了很多。

我放弃了VBA。

自动更换文件名

我尝试的下一个选项是在Excel中有一列文件名,旁边有一列包含我想在每个文件上运行的公式。我没有将链接的文件名放在公式中,而是放置了一个唯一的占位符('XXXXX'或其他)。

然后我制作了一个小宏(对于当前选定的行)进行搜索并在行中替换以将'XXXXX'更改为A列中的文件名。我必须运行宏40次以覆盖每个文件,但我只需要做一次这个过程。当我向列表中添加一个新文件时,我只需添加一个新行,复制公式并更新文件名。

我现在有一个电子表格,当链接文件关闭时,它可以很好地工作,而且不依赖于VBA。

也许如果我的VBA技能更好,我本可以写一些不那么片状的东西 - 但用INDEX()做这一切似乎是最快,最优雅,最可靠的解决方案。