在实际工作中,我们经常需要做动态查询的报表,如下图所示切换日期就可以生成应的日报表:
你是不是在想,要多复杂的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,用&""则可以去掉它们。
兰色说 :一个简单的公式竟然藏着这么多用法,这也是Excel函数的魅力所在
想跟兰色学习函数、图表的同学可以购买四合一大全套课程( 包括 Excel表格92个函数用法 、 119个使用技巧 、 透视表从入门到精通50集 、 图表从入门到精通185集) 。详情点击下方链接