INDIRECT函数太魔幻!一键合并12个月报表,还能做动态下拉菜单!
“身为财务,月底是最痛苦的:
-
面对
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)
然后,只需向右、向下拖动填充,即可完成整张汇总表!
咒语拆解:
-
$A2: 固定的科目编码。列锁定$A,保证向右拖动时科目列不变;行不锁2,保证向下拖动时能切换科目。 -
B$1: 表头,应该是“1月”、“2月”等。行锁定$1,保证向下拖动时始终引用第一行的月份;列不锁B,保证向右拖动时能变成C1(2月)、D1(3月)… -
INDIRECT(B$1&"!A:B"): 魔法核心!
-
B$1&"!A:B"是一个文本拼接过程。当公式在B2时,B$1是“1月”,所以拼接结果是:"1月!A:B"。 -
INDIRECT("1月!A:B")会施法,将这个文本字符串变成真正的、对【1月】这张表A:B列的引用!
- 外层的
VLOOKUP: 就和正常一样,在这个被INDIRECT动态变出来的区域里进行查找。
从此,月底汇总只需刷新数据,汇总表自动生成!
技巧二:INDIRECT函数,制作动态级联下拉菜单
核心魔法: INDIRECT 让数据验证(数据有效性)中的“序列”来源活起来。
业财场景: 制作一个费用报销模板,第一列选择“费用大类”(如:差旅费、办公费),第二列自动出现该大类下的“具体费用项目”。
第一步:定义名称
选中你准备好的费用明细,选中交通费、住宿费、餐补,在左上角输入框输入“差旅费”。这样就快速定义了名称:“差旅费”= {“交通费”, “住宿费”, “餐补”};同理,选中文具、打印费和耗材,在左上角输入框输入办公费,就快速定义了名称:“办公费”= {“文具”, “打印费”, “耗材”}。
第二步:设置一级菜单
选中“费用大类”列,点击 【数据】->【数据验证】,允许“序列”,来源选择你准备好的大类列表。
第三步:设置二级菜单(魔法所在)
选中“明细项目”列,再次点击 【数据验证】,允许“序列”,在来源中输入:
=INDIRECT($E2) // E2是同行“费用大类”所在的单元格
确定后,奇迹发生! 当你在一级菜单选择“差旅费”,二级菜单里就只会出现“交通费,住宿费,餐饮补贴”!
魔法原理:
-
当你在B2选择“差旅费”时,
INDIRECT($B2)就变成了INDIRECT("差旅费")。 -
Excel会去寻找一个名为“差旅费”的定义名称(即我们第一步创建的),并将其代表的列表作为下拉菜单的选项。
工具本身并不复杂,复杂的是业务场景。真正的业财高手,在于能快速为眼前的业务问题,匹配最合适的那个公式。