indirect万能函数(INDIRECT进阶篇十大必会函数)
indirect万能函数(INDIRECT进阶篇十大必会函数)=COUNTA(INDIRECT(H36))然后我们解决重复两列的问题。如图,我们只输入表格的名字,这样就可以统计不带标题的表格内容了。请听题:动态筛选指定大行业中一共有多少个子行业?=COUNTA(INDIRECT(H36&"[#全部]"))这样写我们会发现返回含有题目的整个表格的单元格总数,其中有两个问题:第一,统计子行业不需要标题行;第二编号一列的单元格也计数了,出现了统计的重复问题。首先解决标题的问题。用基础篇学过的不带有[全部]条件去引用智能表格即可。
#思维导图#
#核心能力#
INDIRECT()函数的功能是把类似“单元格或者单元格区域引用的字符串”转变成真正的单元格或者单元格区域引用。
如果基础篇看过了,可以继续往下看。
请听题:动态筛选指定大行业中一共有多少个子行业?
=COUNTA(INDIRECT(H36&"[#全部]"))
这样写我们会发现返回含有题目的整个表格的单元格总数,其中有两个问题:第一,统计子行业不需要标题行;第二编号一列的单元格也计数了,出现了统计的重复问题。
首先解决标题的问题。用基础篇学过的不带有[全部]条件去引用智能表格即可。
如图,我们只输入表格的名字,这样就可以统计不带标题的表格内容了。
=COUNTA(INDIRECT(H36))
然后我们解决重复两列的问题。
比如依靠编号列来统计,继续修改公式引用目标表格的编号列。
=COUNTA(INDIRECT(H36&"[编号]"))
这样似乎就好了。
#避错指南# COUNTA返回的1时,可能是一个错误,需警惕。
但是当有的表格没有编号列怎么办呢?意味着每个大行业都有不同的子行业的标题。
如clothing表格对应纺织服饰行业的列标题,agriculture表格对应农林牧渔行业的列标题,当这正情况出现时,我们就不能单纯的使用[编号]列带入间接引用去统计数量了。否则就会出现无法动态返回结果的窘境了。
=COUNTA(INDIRECT(H36&"[农林牧渔行业]"))
这里我们固定了列的名称为农林牧渔行业,当切换为food表格以后,公式中找不到food这张表格下有农林牧渔行业的列,从而返回引用错误。而引用错误在COUNTA的计算下就神不知鬼不觉的返回了数字1。
我们在面对复杂的表格,大量数据时,往往意识不到这个1其实是错误的结果。
那怎么办呢,其实方法可以很灵活,比如使用我们讲过的CHOOSE函数。
或者使用INDEX函数,这里用INDEX函数操作。
先返回一个动态的标题,这个不理解就得回基础篇再看看了。
=INDIRECT(H36&"[#标题]")
然后嵌套INDEX返回第二列的标题。
=INDEX(INDIRECT(H36&"[#标题]") 1 2)
最后再把上面的公式结合起来:
=COUNTA(INDIRECT(H36&"["&INDEX(INDIRECT(H36&"[#标题]") 1 2)&"]"))
注意字符串的[ ]需要分别用&来连接。
下载练习文件:https://www.aliyundrive.com/s/Q4CFqLfYS3p