之前兰色分享了考勤表的做法,今天要介绍动态查询考勤表的方法,效果如下:
选择不同的月份,就会生成不同月份的考勤表
是不觉得很“高级”,其实做法不并难。跟兰色一起做吧
第1步:在B3单元格中设置下拉菜单,显示月份。(和工作表名称一致)
数据验证(有效性) – 允许 – 序列,在文本框中输入1月,2月,3月,4月,5月,6月,7月,8月 (英文逗号分隔)
第2步 在单元格D4中设置公式并复制到其他单元格中
考勤表的查询最关键就是这个查询公式:
=INDIRECT($B$3&”!”&ADDRESS(ROW(D3),COLUMN(D3)))
公式说明:
- ROW(D3),COLUMN(D3) : Row取得单元格所在行数,Column函数到得单元格所在列数。使用这两个函数的目的是在公式复制时可以返回动态的行号和列数。
- ADDRESS:可以根据行号和列数返回单元格地址,如Address(3,3) 返回第3行第3列的地址$C$3
- ($B$3&”!”& :用单元格B3(工作表名称)连接后面的地址,正好可以根据选取不同的工作表名称,生成对应的工作表地址。如B3的值为1月,那么会返回 1月!$D$3
INDIRECT :用&连接成的引用地址只是字符串,无法取得单元格的值,这时用indirect函数可以从字符串地址中取得值。
兰色说:其实完成动态查询就是 下拉菜单 + Indirect公式,而难点在后者。这个查询功能适合于所有类型表格,所以同学们一定要掌握这个Excel技能。