如何将多个工作薄中的最后一列的最后一个单元格的数据提取出来? 10
2019-12-14 · 知道合伙人软件行家
截图本来模糊,还要涂黑,真是服了!第1个图就不能像第2个图一样带上行号和列标吗?
这里有几个问题要先澄清才好编写公式或用其他方法:
是多个工作簿还是工作表?先要分清工作簿与工作表的概念,这是学或用Excel最起码的第一步。一个Excel生成的文件(在资源管理器中就是一个独立的文件)在Excel中称为工作簿;一个工作簿可以有多张工作表,如你第1张图中下面有工作表的标签,每个不同的标签就代表一个不同的工作表。这和实体的工作簿一样的,一个工作簿就是一个本子,本子里有很多页面,这些页面就相当于工作表。提问中说是“多个工作簿”,但截图中只看到一个工作簿(有很多工作表),所以要澄清的第1个问题就是,从多个工作簿,还是从一个工作簿中的多个工作表?如果是后者,那么是“多个”是所有工作表中的若干个还所有工作表。“多个”这个词太模糊,最后严谨一些。
如果是从多个工作簿中,那么有多少个工作簿,是否在同一文件中,又每个工作簿中有多少张工作表?如果每个工作簿中有多张工作表,又如何取舍?
不管是从工作簿还工作表,这些工作表的结构是否一致,是否有相同的列数和标题?第2 个图中B列是总金额,那么是否每个工作表中最后一列的标题是否都是金额?
这么多不清楚的问题,别人即使为提供了公式或方法,也是难以达到你的真正要求的。
根据补充的内容和截图,问题就清楚多了。但第3个截图与提问要求的最后一个数据貌似不一致,按问题的文字描述,是要H列的最后一个数字,但截图3中的13.41是不是要提取的,看起来好像有点不像,自己去分析吧。
这个问题有两个关键点:第1个是把工作表名称填充到汇总表中,当然可以一个个输入,但用宏表函数自动获取无疑更方便;第2个便是根据工作表名称提取和工作表中H列的最后一行的数据。
获取工作表名称,先用宏表函数定义一个名称,如:AllShts
AllShts=REPLACE(GET.WORKBOOK(1),1,FIND("]",GET.WORKBOOK(1)),)&T(NOW())
2. 在汇总表的A列得到除当前工作表以外的所有工作表的名称:
A2=IF(ROW()>COUNTA(AllShts),"",INDEX(AllShts,ROW()))
因为从A2开始,所以没有取出对应row()=1的工作表名称——也就是当前工作表的名称。
在汇总表的B列得到各个工作表的H列最后一行数据(数字——下面的公式只针对取数字列最后一行的数字):
B2=IF(A2="","",LOOKUP(9^9,INDIRECT(A2&"!H:H")))
一起下拉A2:B2,到出现空白数据行。
而本问题推荐的方法是用Power Query来处理,下面的经验是合并工作簿中的所有工作表的数据,对于本问题,只要在步骤中增加删除H列以外所有列,并只保留H列最一行数据即可。
意思是多窗口操作然后挨着复制吗?不太懂