
心理教育培训机构问“下一期希望参加哪些心理课程”,学员可以同时选择多个项目。导出后,单元格里可能是“A;B”或“A;C”。直接统计整格相同答案,得到的是答案组合数;要知道每个选项有多少人选择,需要按单个选项查找。
下面用六份完全虚构的回答演示。题目属于心理课程需求调查,不是学习动机心理量表,也不计算个人心理分数。
第一步:整理成一人一行,明确空白是什么意思
假设A代表压力调适,B代表睡眠习惯,C代表人际沟通,NONE代表暂不需要上述课程,且NONE与其他选项互斥。原始导出文件保留不动,在副本里统一为英文分号分隔的固定代码,去除代码两侧的多余空格。
在Excel的A1:C7区域放入以下内容:
| 编号 | 标准化选择 | 本题状态 |
|---|---|---|
| S01 | A;B | 已答 |
| S02 | A | 已答 |
| S03 | A;C | 已答 |
| S04 | B | 已答 |
| S05 | NONE | 已答 |
| S06 | 未答 |
先核对重复编号、非法代码、NONE与其他选项同选等问题,并保留处理记录。本例假设这些检查已经完成,六行分别属于六位学员,题目向所有人展示。实际项目若有跳题、无效作答或同一人重交,应先明确纳入规则,不能让公式代替判断。
S05确实回答了“暂不需要”,S06没有回答,两者必须区分。本例的比例分母是已回答本题的5人,包含S05。
第二步:给代码加边界,再计数
在D1输入“检索文本”,D2输入公式 =";"&B2&";",向下填充到D7。这样A;B变成;A;B;,只有A的单元格变成;A;。
在H1:J4建立汇总区,表头依次为“选项”“人数”“占本题回答者比例”,H2:H4分别填写A、B、C。在K1填“本题回答人数”,K2输入:
=COUNTIF($C$2:$C$7,"已答")
结果为5。在I2输入下面的公式,再向下填充到I4:
=COUNTIFS($D$2:$D$7,"*;"&H2&";*",$C$2:$C$7,"已答")
两项条件同时满足才计数:该行确实含有这个完整选项代码,而且本题状态是“已答”。Microsoft官方说明COUNTIFS会同时检查多个等大小区域中的条件,星号可匹配任意字符串。[1] 给代码两侧加分号,是为了避免搜索A时把AA或A1一起算入。
在J2输入 =IF($K$2=0,"",I2/$K$2),向下填充到J4,再将这三格设为百分比格式。这里用IF在分母为0时留空,避免显示除零错误。[2] 公式使用英文半角引号与逗号;若本机Excel以分号分隔函数参数,应按本机设置调整参数分隔符,字符串内部的分号保持不变。

为什么百分比相加是120%?
A有3人选择,占60%;B有2人,占40%;C有1人,占20%。同一人可以选多个项目,三个比例之和为120%是合理的。不能为了凑100%而改分母。
如果改用“A、B、C三个课程选项累计被选择的次数”作分母,本例是6次,不含NONE,A则占3/6,即50%。这回答的是各选项在这三个课程选项累计选择次数中的份额,不能写成“50%的学员需要压力调适课程”。报告应明确采用哪种口径。
本例建议写:“6人提交,5人回答本题;回答者中,3人选择压力调适课程(60%),2人选择睡眠习惯课程(40%),1人选择人际沟通课程(20%);1人选择暂不需要,另1人未回答。”
最后抽查三行:S01同时进入A和B,S05进入分母但不进入A/B/C,S06不进入本题回答人数。三个结果都对,再把公式范围扩展到正式数据。COUNTIF和COUNTIFS会统计指定范围中的隐藏行;只筛选屏幕上的部分记录,不会自动改变这里的统计范围,分组分析应另加明确条件或复制经核对的分析子集。
参考来源
[1] Microsoft:COUNTIFS函数的多条件计数、范围要求与通配符
[2] Microsoft:IF函数
