INDIRECT函数太魔幻!一键合并12个月报表,还能做动态下拉菜单!

office

“身为财务,月底是最痛苦的:

  • 面对1月、2月…12月整整12个sheet页的费用数据,如何快速合并成一张年度总表?

  • 做数据录入模板时,如何实现“选择了省,下拉列表里就只出现该省的市”这种智能级联效果?

如果你还在手动复制粘贴,或者制作僵死的下拉列表,那么今天,你就是被选中的“天选打工人”!我们将请出Excel中最具魔法的函数——INDIRECT,让它和VLOOKUP强强联合,帮你自动化解决这些问题。”

技巧一:VLOOKUP+INDIRECT,一键合并12个月报表

核心魔法: INDIRECT 函数能将文本字符串变成真正的单元格引用。

业财场景: 你有一个工作簿,包含12个月的表(sheet名分别为:1月、2月…12月),每个表的结构完全一样:A列是“科目编码”,B列是“科目金额”。现在需要在【汇总表】里,动态提取每个科目在各个月的金额。

图片

传统方法: 手动写12个VLOOKUP,分别引用12个sheet…
魔法方法: 只写1个公式,拖动填充搞定全部!

魔法公式详解:

在【汇总表】的B2单元格(即1月,科目1的金额),输入:

=VLOOKUP($A2,INDIRECT("’"&B$1&"’!A:B"),2,0)

然后,只需向右、向下拖动填充,即可完成整张汇总表!

咒语拆解:

图片

  1. $A2: 固定的科目编码。列锁定$A,保证向右拖动时科目列不变;行不锁2,保证向下拖动时能切换科目。

  2. B$1: 表头,应该是“1月”、“2月”等。行锁定$1,保证向下拖动时始终引用第一行的月份;列不锁B,保证向右拖动时能变成C1(2月)、D1(3月)…

  3. INDIRECT(B$1&"!A:B"): 魔法核心!

  • B$1&"!A:B" 是一个文本拼接过程。当公式在B2时,B$1是“1月”,所以拼接结果是:"1月!A:B"。

  • INDIRECT("1月!A:B") 会施法,将这个文本字符串变成真正的、对【1月】这张表A:B列的引用!

  1. 外层的VLOOKUP: 就和正常一样,在这个被INDIRECT动态变出来的区域里进行查找。

从此,月底汇总只需刷新数据,汇总表自动生成!

技巧二:INDIRECT函数,制作动态级联下拉菜单

核心魔法: INDIRECT 让数据验证(数据有效性)中的“序列”来源活起来。

业财场景: 制作一个费用报销模板,第一列选择“费用大类”(如:差旅费、办公费),第二列自动出现该大类下的“具体费用项目”。

第一步:定义名称
选中你准备好的费用明细,选中交通费、住宿费、餐补,在左上角输入框输入“差旅费”。这样就快速定义了名称:“差旅费”= {“交通费”, “住宿费”, “餐补”};同理,选中文具、打印费和耗材,在左上角输入框输入办公费,就快速定义了名称:“办公费”= {“文具”, “打印费”, “耗材”}。

图片

第二步:设置一级菜单
选中“费用大类”列,点击 【数据】->【数据验证】,允许“序列”,来源选择你准备好的大类列表。

图片

图片

第三步:设置二级菜单(魔法所在)
选中“明细项目”列,再次点击 【数据验证】,允许“序列”,在来源中输入:

=INDIRECT($E2) // E2是同行“费用大类”所在的单元格

图片

确定后,奇迹发生! 当你在一级菜单选择“差旅费”,二级菜单里就只会出现“交通费,住宿费,餐饮补贴”!

图片

图片

魔法原理:

  • 当你在B2选择“差旅费”时,INDIRECT($B2) 就变成了 INDIRECT("差旅费")。

  • Excel会去寻找一个名为“差旅费”的定义名称(即我们第一步创建的),并将其代表的列表作为下拉菜单的选项。

工具本身并不复杂,复杂的是业务场景。真正的业财高手,在于能快速为眼前的业务问题,匹配最合适的那个公式。