在实际工作中,我们经常需要做动态查询的报表,如下图所示切换日期就可以生成应的日报表:
你是不是在想,要多复杂的excel公式才能实现这么“高级”切换功能。等兰色亮出公式估计很多人惊到大牙:原来公式这么简单:
=INDIRECT($C$2&"!RC",0)&""
嘿嘿,公式就这么短。只是.....能看懂这个公式的估计不到十分之一。C2是引用工作表名称,RC又是什么鬼?&""又是什么作用?
想看懂这个公式,要先明白indirect函数的两种引用模式:
1、A1模式:列标+行号的引用模式
=indirect("b1") 可以把单元格b1的值提取出来
2、R1C1模式:R行数C列数的引用模式,第2个参数为false或0
=indirect("R1C2",0) 也是提取B1的值
但如果R和C后都没有数字:RC,则表示当前行当前列。相当于row()和cloumn()
=indirect("RC",0) 表示引用公式所在单元格的值,即自身的值,会形成循环引用。如果引用另一个表则不会形成循环引用。如在A表中引用B表相同行列单元格的值:
=indirect("B!RC",0)
本例中,查询表和1日、2日...的日报表格式完全相同,都是从第4行第1列开始查询的。所以=INDIRECT($C$2&"!RC",0) 就可以查询对应日报表相同位置的值。
&""有什么用?
公式引用的如果是空格会返回很多无意义的0,用&""则可以去掉它们。
领取专属 10元无门槛券
私享最新 技术干货