Google Sheets中MAXIFS结合arrayformula无法自动填充求助
数组公式仅返回首个单元格结果,无法自动填充
我首次在Stack Overflow发帖,若格式或礼仪有问题请见谅。
我需要在「Control de Orden」工作表中添加字段,显示订单的最后更新日期,但使用的数组公式仅在第一个单元格返回正确结果,无法自动填充下方单元格。
工作表说明
- RawDataOrdenes:用于录入新订单,C列为订单号,D列为收据号;
- RawDataActualizaciones:用于录入订单更新,D列为订单号,E列为收据号,包含订单更新日期字段;
- Control de Orden:整合前两个工作表的数据,订单新增或更新时同步更新,单个订单可能有多条更新记录。
尝试过的公式
最初使用的公式:
=arrayformula(MAXIFS(RawDataActualizacion!G2:G,RawDataActualizacion!B2:B,(D2:D&C2:C)))
参数说明:
RawDataActualizacion!G2:G:最后更新日期列;RawDataActualizacion!B2:B:收据号与订单号的拼接值列;D2:D&C2:C:当前工作表中收据号与订单号的拼接值。
后续还尝试了两个公式,同时创建了辅助列J2:J存储D2:D&C2:C的数组拼接值:
1.
=arrayformula(BYROW(RawDataActualizacion!G2:G,LAMBDA(x,MAXIFS(RawDataActualizacion!B2:B,(D2:D&C2:C),x))))
该公式能自动填充但返回零值。
2.
=BYROW(A3:INDEX(RawDataActualizacion!G2:G,COUNTA(RawDataActualizacion!G2:G)),LAMBDA(x,MAXIFS(RawDataActualizacion!B:B,(D2:D&C2:C),x)))
解决方案
问题核心是MAXIFS搭配ARRAYFORMULA时,无法自动遍历每一行的匹配条件;你之前用BYROW时遍历对象搞错了,应该遍历当前工作表的订单拼接值,而非更新表的日期列。
推荐两种可行公式:
方案1:用XLOOKUP(效率更高)
在「Control de Orden」目标列的首行输入:
=ARRAYFORMULA(IF(D2:D="","",XLOOKUP(D2:D&C2:C,RawDataActualizaciones!B2:B,RawDataActualizaciones!G2:G,"",0,2)))
- 逻辑:用当前行的订单+收据拼接值作为匹配键,在更新表的拼接列中降序查找,返回最后匹配到的日期(即最新更新日期);
IF(D2:D="","",...)用于过滤空行,避免返回错误或0值。
方案2:用BYROW(逻辑更直观)
同样在目标列首行输入:
=BYROW(D2:D&C2:C,LAMBDA(key,IF(key="","",MAXIFS(RawDataActualizaciones!G2:G,RawDataActualizaciones!B2:B,key))))
- 逻辑:遍历当前工作表每一行的拼接键,对每个键执行
MAXIFS,从更新表中取出对应订单的最大更新日期; - 同样加入空值判断,优化显示效果。
内容的提问来源于stack exchange,提问作者literarymanchester
相关产品推荐
相关产品推荐

