Google Sheets:用ARRAYFORMULA匹配今日日期并显示9行表格
解决Google Sheets中ARRAYFORMULA匹配日期后显示多行表格的问题
问题根源
你当前的公式只显示第一行,核心原因是数组维度不匹配:A721:A是一列多行的动态数组,而$T$12:$Y$20是固定的9行6列区域。当IF函数逐行判断A721:A=TODAY()时,只能将$T$12:$Y$20的第一行对应到A721的位置,后续行因数组无法对齐返回空值。
解决方案
根据你的需求,分两种场景给出实用公式:
场景1:只要A721:A存在今日日期,就显示完整的T12:Y20表格
如果不需要定位到具体匹配行,只要A列有今日日期就直接展示整个9行表格,把以下公式放在你要显示表格的起始单元格(比如B721):
=IF(COUNTIF(A721:A, TODAY())>0, $T$12:$Y$20, "")
该公式会自动扩展为9行6列的表格,当A列无今日日期时返回空值。
场景2:在A列第一个匹配今日日期的行,开始显示T12:Y20的9行表格
如果你需要从A列第一个等于今日日期的行开始,往下完整展示9行表格,使用这个公式:
=ARRAYFORMULA( LET( match_row, XMATCH(TODAY(), A721:A, 0), start_row, ROW(A721) + match_row - 1, IF( ROW(A721:A) >= start_row AND ROW(A721:A) < start_row + 9, INDEX($T$12:$Y$20, ROW(A721:A) - start_row + 1, COLUMN(A721:A) - COLUMN(A721) + 1), "" ) ) )
XMATCH定位A列第一个今日日期的相对行号start_row计算出匹配行的绝对行号INDEX将$T$12:$Y$20的内容精准映射到匹配行开始的9行区域
额外提示
- 若A列存在多个今日日期,场景2的公式只会以第一个匹配行为起点显示表格;如需以最后一个匹配行为起点,可将
XMATCH的第三个参数改为-1 - 公式中的
LET函数用于简化变量定义,让逻辑更清晰
内容的提问来源于stack exchange,提问作者Steve S.
相关产品推荐
相关产品推荐

