索引函数从一个封闭的工作簿中提取值,但使用工作表名称作为工作表名称

问题描述 投票:0回答:1

我有2个工作簿,每本书中的每一页都是一年中的几个月。源书和目标书具有相同的工作表名称,例如。 2019年8月,2019年9月.....我在目标书B9单元格中创建了以下公式,以从源工作簿AJ46单元中提取一个值:

= INDEX('C:\ FTPDownloads \ Villa Stuff [入住率图表Rev 1d.xlsx] 2019年8月'!$ AJ $ 46,1)

即使关闭源代码书,它也可以正常工作。在目标书中,我使用以下公式加载了单元格Q3:

= MID(CELL(“文件名”,A1),FIND(“]”,CELL(“文件名”,A1))+ 1,255)

这将当前活动工作表加载到目标书中的单元格Q3。因此单元格Q3的值为2019年8月。目标书中有20个INDEX公式副本,唯一更改的是最后的源单元格,在上面的公式中是AJ46。为了防止在将工作表扩展到以后的月份时INDEX公式不断变化,我想使用单元格Q3中的值代替输入实际的工作表名称。我试过了:

= INDEX('C:\ FTPDownloads \ Villa Stuff [占用率图表修订版1d.xlsx]“&Q3&”'!$ AJ $ 46,1)

但是会产生错误。我正在使用Excel 2007。

excel function indexing
1个回答
0
投票

首先,如果只想返回特定的单元格,例如说AJ46,为什么不直接引用单元格地址而不是使用INDEX函数呢?我确信无论其他工作簿是否为open,以下内容也将返回所需的值。

='C:\FTPDownloads\Villa Stuff[Occupancy Chart Rev 1d.xlsx]Aug 2019'!$AJ$46

[其次,在网上,甚至在这个post社区中,都对此主题进行了广泛的讨论。简单的结论是:

没有办法使用excel公式制作动态

工作簿/工作表/范围/单元格名称,并从closed工作簿返回所需的值。

第三,可以使用VBA完成。如果您可以选择此选项,则可以将#vba添加到标签中,以便其他贡献者可以以#vba的身份帮助您,而不是我的专业知识。我之前提到的帖子中的某人提供了一个vba代码,该代码可直接用于单元格引用,但不包含INDEX

。如果您愿意这样做,则可以尝试一下。

第四,供您参考,也可以使用PowerQuery完成,但仅在Excel 2010和更高版本中可用。此外,PowerQuery在处理大型原始数据集而不是结构化报告方面效果最佳。

© www.soinside.com 2019 - 2024. All rights reserved.