Excel中如何选择含相同值的最后单元格及父项成员计数公式优化
解决Excel中统计每个Parent对应成员数量的问题
我完全懂你的痛点:手动写固定范围的公式,拖拽时区域会自动偏移,没法精准适配每个Parent到下一个Parent之间的成员范围。下面给你两种实用方案,覆盖不同版本的Excel:
方案1:兼容所有Excel版本的传统公式
假设你的数据在B列,从B1到B19(对应你给出的数据集),在C1单元格输入以下公式,然后向下拖拽填充即可:
=IF(B1="Parent",IFERROR(MATCH("Parent",B2:$B$19,0),ROWS(B1:$B$19)-ROW(B1)+1),"")
公式拆解:
IF(B1="Parent", ... , ""):只在标记为Parent的行计算数值,其他行留空,避免杂乱MATCH("Parent",B2:$B$19,0):从当前行的下一行开始,定位下一个Parent的相对位置——这个数值正好是当前Parent组的成员总数(比如第一个Parent在B1,找到下一个Parent在B5,返回4,对应1个Parent+3个Child的总数量)IFERROR(..., ROWS(B1:$B$19)-ROW(B1)+1):处理最后一个Parent组,因为找不到下一个Parent,直接计算从当前行到数据末尾的总行数
方案2:Excel 365/2021专属的动态数组公式
如果用的是新版Excel,公式可以更简洁,甚至不需要拖拽,输入一次自动填充所有结果:
在C1单元格输入:
=LET( data, B1:B19, parent_rows, IF(data="Parent",ROW(data),""), next_parent, VSTACK(DROP(parent_rows,1),ROWS(data)+1), IF(data="Parent", next_parent - ROW(data), "") )
公式拆解:
LET函数给变量命名,让公式逻辑更清晰parent_rows标记所有Parent所在的行号next_parent把每个Parent对应的下一个Parent行号(最后一组用数据总行数+1)匹配好- 最后通过
next_parent - ROW(data)直接算出每个Parent组的成员数量
验证你的示例数据集
用你提供的测试数据验证:
- 第一个Parent(B1):下一个Parent在B5,
5-1=4,和你说的成员数4完全匹配 - 第二个Parent(B5):下一个Parent在B8,
8-5=3,对应成员数3 - 第三个Parent(B8):到数据末尾共12行,
19-8+1=12,正好是1个Parent+11个Child的总数
这样不管你的数据集后续怎么调整,公式都能自动适配每个Parent组的范围,再也不会出现拖拽时区域跑偏的问题啦!
内容的提问来源于stack exchange,提问作者Sayam Nandy




