ARTICLE · 1230479
【办公小技巧】填高基报表时重温EXCEL函数countifs
2 万行学生表,按省份统计人数,一个 COUNTIFS 就够了
不用透视表,不用辅助列,写完横向一拉、纵向一拉就出结果
最近填高基报表,遇到这样一件事:一张两万多行的全日制在校生信息表,35 个字段,密密麻麻铺满整个屏幕。
而要回答的问题其实特别朴素——每个省各有多少高职专科生、多少职业本科生。
手动筛?三十多个省份,每个省筛两遍,眼睛先花。
其实这件事,一个公式就够了。

▲ 源表:省份在 J 列,专业层次在 Q 列
先想清楚要填成什么样
A 列是省份,后面三列要填:总计、高职专科、职业本科。

▲ 目标表:一行一个省份,一列一个层次
注意一个细节:源表里的省份写的是「江苏省」,目标表里写的是「江苏」。全称对简称,这一处不对称,是后面公式的关键伏笔。
公式只要写一次
在 C2 单元格输入下面这行,回车:
=COUNTIFS(全日制高职在校生信息表!$J:$J,"*"&$A2&"*", 全日制高职在校生信息表!$Q:$Q,C$1)
然后选中 C2,向右拖到 D2,再整体向下拖到最后一行。两列数据同时算完。
B 列的总计,写 =C2+D2,下拉即可。
COUNTIFS 到底在做什么
它的全称是「多条件计数」,干一件事:数一数,有多少行同时满足你给的几个条件。
语法很规整:
=COUNTIFS(条件区域1, 条件1, 条件区域2, 条件2, ...)
参数永远成对出现,区域管「去哪一列找」,条件管「找什么样的」。所以参数个数一定是偶数——哪天公式报错,先数数参数是不是落单了,八九不离十。
回到公式,正好两对:
区域 | 条件 | 含义 |
J 列(省份) | "*"&$A2&"*" | 这一行的省份,包含 A2 里的字 |
Q 列(专业层次) | C$1 | 等于表头写的「高职专科」 |
第一对:那个星号是关键
& 是文本拼接。$A2 是「江苏」,拼出来就是 "*江苏*"。
而 * 是通配符,代表「任意多个字符」。所以 "*江苏*" 的意思不是「等于江苏」,是「包含江苏两个字的任意内容」。
源表写「江苏省」,命中;写「新疆维吾尔自治区」的,用 "*新疆*" 一样命中。全称、简称、带不带后缀,全都不用管——不用做名称对照表,这是最省事的地方。
为什么是 $A2 而不是 A2$ 锁住列、不锁行。往下拖时,公式依次取 A3、A4……跟着省份往下走;往右拖时,列位钉死在 A 列,不会跑到 B 列去取空值。
第二对:C$1 让一个公式管两列
C1 单元格里写的字是「高职专科」,D1 是「职业本科」——恰好和源表 Q 列的取值一模一样,所以直接拿表头当条件用,连常量都不用敲。
C$1 把行号 1 锁死、列放开。C 列公式里它取「高职专科」,拖到 D 列自动变成 D$1,取「职业本科」。
这就是为什么只需要写一个公式,横向一拉两列全出来。
$ 到底锁谁,一句话记住
写法 | 下拉 | 右拉 | 用在哪 |
A2 | 行变 | 列变 | 完全跟随 |
$A2 | 行变 | 列不变 | 钉住某一列 |
C$1 | 行不变 | 列变 | 钉住表头 |
$A$1 | 不变 | 不变 | 固定参照点 |
口诀就八个字:$ 在谁前面,谁就不动。
三个容易踩的坑
坑一:条件区域整列引用写错表名
表名带空格、带数字、带括号的,记得用单引号包起来:'全日制高职在校生信息表'!$J:$J。表名纯中文一般可以省略,但加上永远不出错。
坑二:报 #REF!
多半是源表的列位置挪了。字段一增一减,J 列可能就变成了「身份证号」。改公式前先回去看一眼表头,确认省份、专业层次各在第几列。
坑三:数字对不上预估
先确认口径。要不要只算某个年级?要不要排除休学、退学?这些都得在公式里体现。比如只统计 2024 到 2026 级,加一对参数就行:
'全日制高职在校生信息表'!$U:$U,"<>2023级"
然后拿 =SUM() 把整列加起来,跟源表的筛选结果对一遍,两个数一致才算完工。
写在最后
COUNTIFS 不复杂,难的是想清楚「数什么」和「按什么数」——把这两件事拆成一对一对的区域和条件,公式自然就写出来了。
比记住公式更有用的,是记住这个思路:先看表头,再定列位,最后拼条件。















































































