多行多列名单里统计不重复人数,可以用 =counta(unique(tocol(a2:e6,1)))。先用 tocol 把多列名单压成一列,再用 unique 去重,最后用 counta 统计剩下多少个姓名。
当前操作软件:Microsoft Excel
软件版本:Microsoft 365
公式拆解:TOCOL(array,[ignore],[scan_by_column]) 负责把区域变成一列,第二参数填 1 表示忽略空白;UNIQUE(array) 返回唯一值;COUNTA(value1,...) 统计非空结果数量。TOCOL 是较新的动态数组函数,如果使用 WPS 或旧版 Excel,需要先确认是否支持。
第一步:确认要统计的名单区域
先框定原始姓名区域。示例中 A2:E6 是 5 天报名名单,同一个人可能出现在不同日期,也可能有空白单元格;统计目标是算出总共有多少个不同的人。

第二步:用 TOCOL 把多列名单压成一列
在空白位置输入 =TOCOL(A2:E6,1)。第二参数 1 会跳过空白单元格,避免空白也进入后续去重结果。先单独测试这一步,可以确认原始区域有没有选错。

第三步:套上 UNIQUE 提取唯一姓名
把公式改成 =UNIQUE(TOCOL(A2:E6,1)),Excel 会把重复出现的姓名只保留一次。溢出结果里的名单就是实际参与统计的不重复人员清单。

第四步:用 COUNTA 得到人数
最终公式写成 =COUNTA(UNIQUE(TOCOL(A2:E6,1)))。示例结果为 7,表示这块多行多列名单里共有 7 个不同姓名。后续新增或删除原始名单时,结果会跟着重新计算。

旧版 Excel 的处理办法
如果当前版本没有 TOCOL,可以先把多列名单复制到一列,再使用“数据”里的“删除重复项”,最后查看剩余姓名数量。这个办法不是动态公式,但在旧版本和部分 WPS 环境里更稳。
核对结果时注意三件事:姓名前后不要有多余空格;同一个人的不同写法会被当成两个人;如果名单里有工号,优先按工号去重,比只按姓名更准确。


















