Google Sheets如何从不相邻两列提取日期对应唯一值生成动态表
Google Sheets 按日期对齐双列唯一值动态表实现方案
原有公式问题说明
你之前使用的=unique(filter(A2:E,{1,1,0,1,1}))存在逻辑缺陷:该公式仅剔除了C列保留其余四列,本质是对「A列日期+B列值」「D列日期+E列值」两组独立的日期-值对分别去重,没有做日期维度的对齐合并,必然返回两套互不关联的日期列,无法实现H、I列值相邻排布的效果。
可用实现公式
直接将以下公式粘贴到G2单元格,公式会自动溢出填充G、H、I三列的全部动态结果,源数据更新时结果会自动同步:
=LET( all_dates, UNIQUE(FLATTEN(FILTER(A2:A,A2:A<>""),FILTER(D2:D,D2:D<>""))), res, REDUCE({"日期","B列唯一值","E列唯一值"}, all_dates, LAMBDA(acc,cur_date, b_vals, UNIQUE(FILTER(B2:B,A2:A=cur_date,B2:B<>"")), e_vals, UNIQUE(FILTER(E2:E,D2:D=cur_date,E2:E<>"")), max_len, MAX(ROWS(b_vals),ROWS(e_vals)), b_pad, IF(SEQUENCE(max_len)<=ROWS(b_vals),b_vals,""), e_pad, IF(SEQUENCE(max_len)<=ROWS(e_vals),e_vals,""), VSTACK(acc, HSTACK(SEQUENCE(max_len,1,cur_date,0),b_pad,e_pad)) )), res )
注意:使用前请确保G2单元格下方的G、H、I列区域没有手动输入的内容,否则会触发#REF!溢出错误
公式逻辑说明
- 先通过
FLATTEN将A、D两列的所有日期合并为一维数组,用UNIQUE提取全量不重复日期作为统一分组维度,从根源避免双日期列问题 - 遍历每一个目标日期,分别筛选出该日期下B列、E列的非空唯一值
- 取两组唯一值的最大行数做对齐处理,行数不足的一侧补空值,保证同一日期下B、E列的提取结果逐行相邻排布
- 最后按行拼接所有日期的处理结果,输出符合要求的三列动态表
内容的提问来源于stack exchange,提问作者Kishan Patel
相关产品推荐
相关产品推荐

