乐于分享
好东西不私藏

很多人没用过的Excel函数:CODE到底能做什么?

很多人没用过的Excel函数:CODE到底能做什么?

CODE 是 Excel 中用来返回文本字符串第一个字符对应的 ANSI(Windows 代码页)数值的内置函数。

  • • 对于英文字母、数字和常见符号,CODE 返回的数值与其 ASCII 码 完全相同。
  • • 对于中文、日文等多字节字符(DBCS),CODE 会返回 双字节编码的数值(范围 256‑65535),在中文简体环境下对应 GBK 代码页 936。
  • • 该函数常被用于 字符‑数字互转、字符分类、统计字符出现规律 等场景,尤其在需要快速获取“首字符编码”时十分便捷。

语法

=CODE(text)
参数
说明
text
必需。要返回首字符代码的文本字符串或单元格引用。若为数值,Excel 会先将其转换为文本再处理。
  • • 返回类型:数值(整数)。
  • • 异常:若 text 为空或非文本类型,函数返回 #VALUE! 错误。

示例(均基于提供的 20 行业务数据)

为方便演示,假设 D 列 为“月份”列,示例中的单元格位置均对应 Excel 工作表中的实际行号。

示例 1:提取月份首字符的 ANSI 代码

=CODE(D2)
  • • 结果:对于第 2 行(1月),CODE 返回 49,即字符 "1" 的 ASCII 码。
  • • 说明:因为月份采用“数字 + ‘月’”的形式,CODE 能够直接捕获前面的数字字符。此时 49 代表“1”,50 代表“2”,51 代表“3”,52 代表“4”。
  • • 扩展:可以在公式栏直接拖动,查看每行的代码值:

示例 2:将代码转换为实际月份数字并计算季度

2.1 获得月份数值

=CODE(D2)-48
  • • 原理:ASCII 码中 "0" 为 48,故 CODE 结果减去 48 即得到对应的数字。
  • • 结果:第 2 行得到 1(1月),第 3 行得到 2(2月),以此类推。

2.2 根据月份数值划分季度

=INT((CODE(D2)-48-1)/3)+1
  • • 逻辑:季度 = INT((月份-1)/3)+1

该公式结合了 CODEINT 与算术运算,展示了 字符 → 数字 → 业务指标 的完整链条。


示例 3:统计各月份出现次数(利用 CODE 过滤)

=SUMPRODUCT((CODE(D$2:D$21)=49)*1)
  • • 功能:统计“月份”列中首字符代码为 49(即“1 月”)的行数。
  • • 结果:在示例数据中,1 月出现 6 次
  • • 扩展:只需将代码 49 改为 50、51、52,即可得到 2 月、3 月、4 月的出现次数:
代码
月份
出现次数
49
1月
6
50
2月
6
51
3月
6
52
4月
2

若希望用 COUNTIF 完成相同统计,可直接使用 =COUNTIF(D:D,"1月"),但 SUMPRODUCT+CODE 的组合在需要 基于字符编码进行复杂过滤 时更为灵活。

小技巧:代码映射回月份文字

=VLOOKUP(CODE(D2),{49,"1月";50,"2月";51,"3月";52,"4月"},2,TRUE)
  • • 作用:把 CODE 计算得到的数值再映射回对应的中文月份。
  • • 适用场景:当数据源只保留编码,而需要在报表中显示文字时,可直接使用此数组公式。

常见错误

错误
产生原因
解决办法
#VALUE!text
 参数为 空单元格 或 非文本(如数字未加引号)
确保引用的是文本单元格,或使用 TEXT() 将数值转为文本。
#REF!
误把 CODE 用在 数组公式 的错误范围
检查单元格引用是否越界,确保使用 绝对引用$)时范围完整。
结果与预期不符
在 多语言环境(如繁体、日文)下使用同一字符,DBCS 代码页不同导致编码差异
若跨地区共享工作簿,建议先将文本统一为 Unicode(使用 UNICODE 函数)再进行比较。

小结

  • • CODE 是 “字符 → 数字” 的桥梁,能够快速获取任意文本首字符的 ANSI/GBK 编码。
  • • 结合 算术运算(如 -48)或 逻辑函数IFSUMPRODUCT),可以在 数据清洗、月份归类、统计计数 等实际业务场景中发挥巨大作用。
  • • 需注意 空值 与 多字节字符在不同代码页下的差异,以免出现 #VALUE! 或结果偏差。
  • • CODE 与 CHAR(逆函数)常成对使用,实现 字符 ↔︎ 代码 的互相转换,是 Excel 文本处理的利器。

📚 配套学习资料免费领评论回复:CODE点击公众号菜单「函数教程」,获取教程。