如何优化重复调用XLOOKUP的求和公式使其更简洁?
简化重复XLOOKUP求和的几种方案
方案1:SUMPRODUCT + INDEX/MATCH(兼容多数Excel版本)
把需要引用的行号和对应的正负系数做成两个数组,一次性完成匹配计算,彻底避免重复调用查找函数:=SUMPRODUCT( {1,1,-1,1,1,-1}, INDEX(BankStatements!$G$37:$IU$49, MATCH(K$5, BankStatements!$G$5:$IU$5, 0), {1,2,3,10,12,13}) )注:
{1,2,3,10,12,13}是目标行相对于起始行G37的偏移量(第1行对应G37、第2行G38、第3行G39、第10行G46、第12行G48、第13行G49),{1,1,-1,1,1,-1}是对应行的正负系数,按需调整即可。方案2:XLOOKUP + 数组运算(Excel 365/2021及以上)
利用XLOOKUP支持数组返回的特性,直接传入多行数据区域,搭配系数数组一次性求和:=SUM(XLOOKUP(K$5, BankStatements!$G$5:$IU$5, BankStatements!$G$37:$IU$49)*{1;1;-1;0;0;0;0;0;0;1;0;1;-1})注:
{1;1;-1;0;0;0;0;0;0;1;0;1;-1}是G37到G49每行对应的系数,不需要参与计算的行填0,XLOOKUP返回对应列的所有行值后,乘以系数再求和即可自动忽略0值。方案3:LET函数封装(Excel 365/2021及以上,可读性最优)
用LET把重复使用的查找值、表头区域等定义为变量,后续修改只需调整指定部分,公式结构更清晰:=LET( lookup_val, K$5, header_range, BankStatements!$G$5:$IU$5, data_range, BankStatements!$G$37:$IU$49, coefficients, {1;1;-1;0;0;0;0;0;0;1;0;1;-1}, SUM(XLOOKUP(lookup_val, header_range, data_range)*coefficients) )
内容的提问来源于stack exchange,提问作者user28903618
相关产品推荐
相关产品推荐

