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

Excel两列分组子项转指定格式动态更新公式求助

表格分组转层级列表实现方案

以下方案支持B、C列内容变动后自动同步更新,按Excel版本选择对应实现即可:

Excel 365 / 2021 版本(支持动态数组)

仅需在E1单元格输入以下公式,即可自动溢出生成全部E、F列内容,无需下拉填充:

=LET(
groups, TOCOL(UNIQUE(B:B), 1),
item_list, BYROW(groups, LAMBDA(g, VSTACK(g, IFERROR(FILTER(C:C, B:B=g), "")))),
grp_col, TOCOL(BYROW(groups, LAMBDA(g, VSTACK(g, IFERROR(EXPAND(g, ROWS(FILTER(C:C, B:B=g)), , g), g)))), 1),
item_col, TOCOL(item_list, 1),
HSTACK(grp_col, item_col)
)

如果不需要保留E列的分组关联标识,仅需要生成F列,可直接在F1输入简化公式:
=TOCOL(BYROW(TOCOL(UNIQUE(B:B),1),LAMBDA(g,VSTACK(g,IFERROR(FILTER(C:C,B:B=g),"")))),1)

旧版Excel(无动态数组支持)

需分别给E、F列设置公式,手动下拉到足够覆盖最大数据量的行数即可:

  1. 先在空白列(如H列)提取不重复分组,H1输入公式后下拉:
    =IFERROR(INDEX(B:B,MATCH(0,COUNTIF(H$1:H1,B:B),0)),"")
  2. E列公式(下拉填充):
    =IFERROR(INDEX(H:H,MATCH(TRUE,COUNTIF(E$1:E1,H:H)<(1+COUNTIF(B:B,H:H)),0)),"")
  3. F列公式(下拉填充,数组公式需按Ctrl+Shift+Enter确认):
    =IF(E2="","",IF(COUNTIF(E$1:E1,E2)=0,E2,INDEX(C:C,SMALL(IF(B:B=E2,ROW(C:C),99999),COUNTIF(E$1:E1,E2)))))

效果验证

  • 每个分组在F列的第一个值自动等于分组名
  • 无对应C列子项的分组,仅在F列展示分组名本身
  • B、C列新增/修改/删除内容后,公式自动刷新输出结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:15:03