Google Sheets中批量应用MAXIFS函数获取用户最新记录
Google Sheets批量获取用户最新日期的解决方法
针对你需要给sheet1中每个Name/First_Name组合自动匹配「Answers to form」里最新日期的需求,下面提供两种实用的批量实现方法,替代手动拖拽公式的操作:
方法1:用BYROW函数直接批量计算(推荐)
BYROW函数可以逐行处理数据,完美适配你的MAXIFS逻辑。直接在sheet1的A2单元格输入以下公式,它会自动填充到下方所有有对应B、C列数据的行:
=BYROW(B2:C, LAMBDA(row, IF(COUNTA(row)=0, "", MAXIFS('Answers to form'!A:A, 'Answers to form'!B:B, INDEX(row,1), 'Answers to form'!C:C, INDEX(row,2)))))
公式说明:
B2:C指定要遍历的行范围(包含Name和First_Name列)LAMBDA(row, ...)定义每行的处理规则:如果当前行B、C列都为空,返回空值;否则用MAXIFS匹配对应的最新日期INDEX(row,1)和INDEX(row,2)分别提取当前行的Name和First_Name值,作为MAXIFS的匹配条件
方法2:用QUERY+VLOOKUP组合实现
如果更习惯用QUERY函数,可以先从表单回复表中提取每个用户组合的最新日期,再通过VLOOKUP批量匹配:
在sheet1的A2单元格输入以下公式即可:
=ARRAYFORMULA(IF(B2:B="", "", VLOOKUP(B2:B&C2:C, QUERY('Answers to form'!A:C, "select B, C, max(A) where B is not null group by B, C label max(A)''"), 3, FALSE)))
公式说明:
QUERY(...)从「Answers to form」表中按Name和First_Name分组,计算每组的最大日期,生成一个包含用户组合和对应最新日期的临时表B2:B&C2:C将当前行的Name和First_Name拼接成唯一标识,用于匹配临时表中的数据VLOOKUP根据唯一标识找到对应的最新日期,空行自动返回空值
注意事项:
- 确保「Answers to form」表中的Date列是标准日期格式,否则最大值计算可能出错
- 如果不需要空行显示空值,可以去掉公式中的
IF(B2:B="", "", ...)部分,空行会显示#N/A,可按需调整
内容的提问来源于stack exchange,提问作者Vincent Maurer
相关产品推荐
相关产品推荐

