如何用Google Sheet公式自动填充最新日期对应的多单元格数据?
解决Google Sheets自动提取最新日期对应数据的问题
以下按两种常见表格结构给出解决方案,你可以根据实际表格调整:
情况1:结构化表格(日期、数据类型、数值分列)
假设原表格(命名为Sheet1)的结构是:
- A列:日期(如
A2:A范围) - B列:数据类型(
value1/target,如B2:B范围) - C列:Tom的数值(
C2:C范围) - D列:Jim的数值(
D2:D范围)
直接用XLOOKUP公式(新版Sheets支持,简洁直观):
- 提取最新日期的Tom-value1:
=XLOOKUP(1, (Sheet1!$A:$A=MAX(Sheet1!$A:$A))*(Sheet1!$B:$B="value1"), Sheet1!$C:$C) - 提取最新日期的Jim-value1:
=XLOOKUP(1, (Sheet1!$A:$A=MAX(Sheet1!$A:$A))*(Sheet1!$B:$B="value1"), Sheet1!$D:$D) - 提取最新日期的Tom-target:
=XLOOKUP(1, (Sheet1!$A:$A=MAX(Sheet1!$A:$A))*(Sheet1!$B:$B="target"), Sheet1!$C:$C) - 提取最新日期的Jim-target:
=XLOOKUP(1, (Sheet1!$A:$A=MAX(Sheet1!$A:$A))*(Sheet1!$B:$B="target"), Sheet1!$D:$D)
公式逻辑:先用MAX(Sheet1!$A:$A)锁定最新日期,再匹配value1/target类型,两个条件同时满足时返回对应单元格的数值。
如果用旧版Sheets,换INDEX+MATCH数组公式:
- Tom-value1示例:
旧版需按=INDEX(Sheet1!$C:$C, MATCH(1, (Sheet1!$A:$A=MAX(Sheet1!$A:$A))*(Sheet1!$B:$B="value1"), 0))Ctrl+Shift+Enter触发数组计算,新版Sheets自动支持。
情况2:非结构化表格(日期单独一行,下方紧跟value1、target行)
假设原表格结构是:
- 日期单独占一行(如
A1、A4) - 日期行下一行是
value1数据行(Tom/Jim数值在对应列) - 日期行下两行是
target数据行
先找最新日期所在的行号,再偏移行号提取对应数据:
- 获取最新日期的行号:
=MAX(FILTER(ROW(Sheet1!$A:$A), ISDATE(Sheet1!$A:$A))) - 提取Tom-value1(假设数值在C列,日期行+1行):
=INDEX(Sheet1!$C:$C, MAX(FILTER(ROW(Sheet1!$A:$A), ISDATE(Sheet1!$A:$A)))+1) - 提取Jim-target(假设数值在E列,日期行+2行):
只需调整公式里的列号(如=INDEX(Sheet1!$E:$E, MAX(FILTER(ROW(Sheet1!$A:$A), ISDATE(Sheet1!$A:$A)))+2)$C:$C/$E:$E)和偏移行数(如+1/+2),就能适配你的表格。
为什么之前用FILTER+MAX没成功?
大概率是没把「最新日期」和「数据类型」两个条件结合筛选,导致返回了多行数据,无法直接填充单个单元格。上面的公式都是先锁定最新日期,再精准匹配数据类型,确保只返回目标数值。
内容的提问来源于stack exchange,提问作者PineNuts0
相关产品推荐
相关产品推荐

