索引/匹配公式中的动态工作表名称

court_k:

背景

美国政府发布我用于工作的每日报告。最近,政府改变了他们发布报告的方式。他们现在不再以文本文件形式发布报告,而是以pdf形式发布报告。不幸的是,这影响了我从报告中提取信息的方式。以前,我从网站上提取了信息,因为它被保存为文本文件。现在,我下载pdf并将其转换为excel文件。

我有1个工作簿,其中包含报告保存在各个工作表上的副本,例如4月30日,4月29日,4月28日等。不幸的是,由于进行了转换,每页上的信息可能会连续变化一两行,例如, 4月30日的工作表可能位于第30行,4月29日的工作表可能位于第33行。

在工作簿的第一页上,我有一个摘要页面,该页面从上一页中提取关键信息,例如,摘要将从4月30日的工作表中提取信息。

问题

现在的问题来自我如何从excel文件中提取信息。由于信息不在同一行,因此我认为最好使用Index / Match方法。我做的公式如下。参考名称Information_A在A列中,而我需要Information_A的值在P列中。

=(INDEX('April 30'!P:P,MATCH("Information_A",'April 30'!A:A,0)))

由于我的工作表不断变化,因此我认为我可以提取最后一个工作表名称,然后将其输入公式中,

=(INDEX('[previous_sheet]'P:P,MATCH("Information_A",'[previous_sheet]'!A:A,0)))

因此,我试图弄清楚如何提取先前的工作表名称。我尝试了几种不同的方法,最终在这里使用ChrisB的解决方案

我将他提供的公式(如下)保存为PrevSheet_2

=IF( MATCH(wsName,wsNamesArray,0)-1 =0, ERROR.TYPE(7), INDEX(wsNamesArray,MATCH(wsName,wsNamesArray,0)+1))

其中,wsNamesArray和wsName如下,

wsNamesArray: =RIGHT(GET.WORKBOOK(1),LEN(GET.WORKBOOK(1))-FIND("]",GET.WORKBOOK(1))) & T(NOW())

wsName: =MID(CELL("filename", INDIRECT("A1")),FIND("]",CELL("filename",INDIRECT("A1")))+1,255) & T(NOW())

得出了“最终”公式,

=(INDEX("'"&PrevSheet_2&"'!P:P",MATCH(Information_A","'"&PrevSheet_2&"'!A:A",0)))

这不起作用。这个公式给了我#VALUE!错误。

我在不使用PrevSheet_2的情况下测试了该公式,并输入了工作表名称(例如4月30日),并获得了正确的值,因此我知道该部件正在工作。我还在单元格中测试了PrevSheet_2,并且也获得了正确的前一张纸,所以我知道问题出在2的组合上。

那么,我的问题是如何做到这一点

=(INDEX("'"&PrevSheet_2&"'!P:P",MATCH(Information_A","'"&PrevSheet_2&"'!A:A",0)))

公式工作。

我感觉PrevSheet_2的数据类型错误,但是我不知道如何解决它。

编辑:

我也尝试过使用INDIRECT(如下)并获得了#REF!错误。

=INDEX(INDIRECT("''"&PrevSheet_2 &"'!P:P"),MATCH("Information_A",INDIRECT("'"&PrevSheet_2&"'!A:A"),0))

纳雷什·波普(Naresh Bhople):

引用此链接 ..将SheetNames数组(在“公式”>“定义名称”中)定义为SheetNames = MID(GET.WORKBOOK(1),FIND("]",GET.WORKBOOK(1),1)+1,LEN(GET.WORKBOOK(1))).。然后在excel公式中,您可以将上一个图纸名称命名为INDEX(SheetNames,SHEET()-1)

您也可以定义 PreviousSheetName = INDEX(MID(GET.WORKBOOK(1),FIND("]",GET.WORKBOOK(1),1)+1,LEN(GET.WORKBOOK(1))),SHEET()-1)

您可以按照@BigBen的建议将其放在INDIRECT函数中

所以公式将是 =INDEX(INDIRECT("'"&PreviousSheetName &"'!P:P"),MATCH("Information_A",INDIRECT("'"&PreviousSheetName&"'!A:A"),0))

参见.. Sheet函数给出了当前工作表的索引。所以Sheet()-1给我们上一张纸的索引

在我回答之后,我注意到您在间接公式中使用了双引号TWICE。因此,#REF错误

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

动态更改索引/匹配公式中的表名

公式中的动态列索引名称错误

Excel公式中的动态工作表参考

公式中的屏幕工作表名称

如何使用动态工作表名称挂载公式

VBA 索引并与动态工作簿名称匹配

与当前工作簿中的工作表名称相关的公式

在excel的公式中返回引用的工作表名称

在vba中返回动态名称范围的工作表名称

Excel VBA:公式语法引用工作表索引号(相对而不是名称)

工作表循环-如何检索工作表的名称并将其放入公式中

在动态添加的工作表中使用公式

Google工作表公式交换名称

在查询公式上返回工作表名称

使用Excel VBA在不同工作簿中的索引/匹配公式中引用文件路径变量

在 Python 中以动态方式更改工作表名称

通过公式中的索引引用另一个Google工作表

索引匹配数组公式无法正常工作

公式中的变量工作簿名称

vba 输入公式引用另一个动态工作表中的单元格

如何使用在公式的单元格中引用的工作表名称?

使用 VBA 替换列中所有单元格的公式中的工作表名称

使用单元格的内容引用公式中的工作表名称

通过 VLOOKUP 公式中的变量 VBA 名称引用工作表

查找工作表名称并获取工作表索引

“请提供工作表名称或工作表索引”错误

从公式中删除列名称(转换为不含工作表名称的常规单元格坐标)

LINQ中的动态表名称

公式 Excel 按索引查找工作表