You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Excel公式压缩表格:合并单日多单元格数据至单个单元格

需求与问题
  • 核心需求:将输入表格中同一天+同DO列的所有数据合并到输出表格的单个单元格,例如Thu的DO1单元格需显示6u00 + 22u00
  • 输入表格:第一列为日期(如Mon 1、Thu 3),后续列是DO1至DO4,部分单元格内容为Thu 6u00、Sat 3u00这类格式
  • 输出表格:第一列为DO1至DO4,后续列为Mon至Sat,每个单元格需合并对应日期+对应DO列的所有数据

当前公式局限

使用以下公式仅能返回同一天的首个匹配结果,无法合并多条数据:

=IFERROR(TEXTAFTER(INDEX(E21:E37,XMATCH(H25:M25,LEFT(E21:E37,2)),)," "),"")

未完成的LET函数尝试

尝试结合MAKEARRAY与TEXTJOIN构建批量处理公式,但卡在FILTER逻辑部分:

=LET(_Input,L1:O19, '输入表格(不含第一列)
_Do,{"","DO1","DO2","DO3","DO4"},
_Day,{"Mon";"Tue";"Wed";"Thu";"Fri";"Sat"},
_Week,LEFT(G1:G19,3), '输入表格第一列的日期前缀
_rijen,ROWS(_Do)-1,
_Kols,COLUMNS(_Day),
_Export,TEXTAFTER(_Input," ",,,,),
_Databody,MAKEARRAY(_rijen,_Kols,LAMBDA(r,c,INDEX(TEXTJOIN(" + ",TRUE(FILTER( - 此处逻辑未完成 - ))),
_Stack,HSTACK(_Do,VSTACK(_Dag,_Databody)),
_Stack)

注:使用Excel 365版本,无GROUPBY等Beta函数权限

完整解决方案

通过完善LET函数中的FILTER逻辑,结合TEXTJOIN实现批量合并,单个公式即可生成完整输出表格:

=LET(
    输入区域, G1:O19, '完整输入表格(含第一列日期)
    DO列标题, {"DO1","DO2","DO3","DO4"},
    日期列表, {"Mon","Tue","Wed","Thu","Fri","Sat"},
    提取日期前缀, LEFT(INDEX(输入区域,0,1),3), '提取输入表格第一列的日期前缀
    DO列索引, SEQUENCE(ROWS(DO列标题)),
    日期索引, SEQUENCE(COLUMNS(日期列表)),
    合并数据, MAKEARRAY(ROWS(DO列标题),COLUMNS(日期列表),
        LAMBDA(r,c,
            LET(
                当前DO列, INDEX(输入区域,0,r+1), '对应DO列(输入区域第r+1列,因第一列是日期)
                当前日期, INDEX(日期列表,c),
                过滤结果, FILTER(TEXTAFTER(当前DO列," ",,,""), 提取日期前缀=当前日期),
                TEXTJOIN(" + ",TRUE,过滤结果)
            )
        )
    ),
    HSTACK(DO列标题, 合并数据)
)

公式逻辑说明

  1. 输入区域指定完整的输入表格范围(包含第一列日期)
  2. 提取日期前缀从输入表格第一列提取前3位日期标识(如Mon、Thu)
  3. MAKEARRAY生成输出表格主体区域,通过LAMBDA遍历每个DO行和日期列:
    • 定位当前处理的DO列和目标日期
    • 用FILTER筛选出当前日期下该DO列的所有有效数据,并用TEXTAFTER提取时间部分
    • 最后用TEXTJOIN将筛选结果用+连接
  4. HSTACK将DO列标题与合并后的主体区域拼接成完整输出表格

内容的提问来源于stack exchange,提问作者Excellor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 10:33:13