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

Google Sheets统计父项子项数量并提取子项值的公式实现

不用VBA实现父项子项统计与值提取方案

当然可以不用VBA搞定!我给你拆成两个核心步骤,一步步来实现你的需求:

一、优化Count列的子项序号统计

你原来的公式思路没问题,但可以改成更简洁稳定的版本:
在B2单元格输入:
=IF(A2=A1,B1+1,1)
然后下拉填充整个Count列。

注:如果是第一行(B1),直接手动输入1就行,因为没有上一行可以对比。

这个公式的逻辑很直白:如果当前行的Type(A列)和上一行一致,就把上一行的Count值加1;如果Type变了,就重置为1,刚好能统计到Type列变化为止的连续项序号。

二、提取子项的Value到父项的Child Values列

假设你的Value列是C列,Child Values列是D列,我们用TEXTJOIN函数来实现多值拼接(Excel 2016及以上版本、365支持这个函数,旧版可以用替代方法,先讲主流方案):

在D2单元格输入以下公式(Excel 365/2021直接回车,旧版需要按Ctrl+Shift+Enter作为数组公式):
=TEXTJOIN(", ", TRUE, IF((A$2:A$1000=A2)*(ROW($2:$1000)>ROW(2))*(COUNTIF(A$2:A2,A2)=1), C$2:C$1000, ""))
然后下拉填充到整个D列。

公式逻辑拆解:

  • A$2:A$1000=A2:筛选出所有和当前行Type相同的行
  • ROW($2:$1000)>ROW(2):只取当前行之后的行(也就是父项对应的子项行)
  • COUNTIF(A$2:A2,A2)=1:确保当前行是这个Type组的第一行(也就是父项本身,避免子项行也提取值)
  • TEXTJOIN(", ", TRUE, ...):把筛选出来的子项Value用逗号加空格连接,TRUE参数会自动忽略空值

适配你的场景:

  1. 把公式里的A$2:A$1000和C$2:C$1000改成你表格实际的行范围(比如你的表格有5000行,就改成A$2:A$5000)
  2. 即便父项最多8个子项,这个公式也会自动提取所有符合的子项值,完全满足需求

额外注意

  • 确保你的数据是按Type连续排列的(也就是同一个Type的行是连在一起的,直到Type变化),这是整个方案的前提,和你“统计到Type列值变化为止”的需求匹配
  • 如果是非常旧的Excel版本(没有TEXTJOIN),可以用CONCATENATE结合IF和INDEX来实现,但步骤会繁琐一些,不过主流版本都支持TEXTJOIN了

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:39:47