ARTICLE · 1276901
AI 写的 Excel 公式没错,为什么一粘就变 0
上一篇结尾我说,下一条讲 AI 给的公式完全正确、粘进你的表却算出 0。今天把这个坑说完。
先说清楚这件事有多憋屈:公式一个字符都没错,你照着 AI 给的抄进去,回车,单元格跳出来一个 0。回头看数据,B2 到 B4 明明躺着 3、5、2 —— 加起来明明是 10。
于是你开始怀疑公式,改括号、改逗号、把 SUM 换成 SUMIF、又换成 SUMPRODUCT,全是 0。
问题从来不在公式。在于那三个格子里的东西,Excel 不认为它们是数字。
01 AI 看不见你的格子
你跟 AI 说的是:「B 列是工时,帮我算个总和。」
AI 看到的就是这句话。它不知道 B 列那些数字是真的数字,还是长得像数字的一段文字 —— 它一个字都看不到。它只能保证公式在语法上是 =SUM(B2:B4),保证不了这个公式在你的表里能算出东西。
而 SUM 是有脾气的:它只加自己认得出的数字,其余的当不存在。 不报错、不提示、不警告,跳过就完了。
所以「公式对不对」和「结果对不对」是两件事。公式对了,结果照样能是 0。
02 第一种:数字存成了文本
这是最常见的一种,也是上一篇承诺过的那个「数字后面跟着空格」。
三格数字,一列存成文本、一列存成真数字,三个函数一起算:
文本列: SUM得 0,MAX得 0,AVERAGE直接 #DIV/0!
>
数字列: SUM得 10,MAX得 5,AVERAGE得 3.33

A1:C8。同一批数字两种存法。文本列的 SUM 给 0,MAX 给 0,AVERAGE 连平均数都算不出来
AVERAGE 报 #DIV/0! 的原因很说明问题:它内部是「总和 ÷ 个数」,而它对文本的处理是一个都不算 —— 总和 0、个数 0,于是除以 0。
为什么是 0 而不是报错:SUM 遇到不认识的格子的处理方式是「跳过」,不是「抗议」。跳过是它的正常行为,跳完了照样返回一个数 —— 只不过这个数是 0。
怎么认出来
判据就一条:看绿三角,看对齐。
带绿三角、靠左站的,就是「数字存成了文本」。真数字靠右站。图 1 里 B2 到 B4 三格,也就是三行工时,全带绿三角。
怎么修
- 一格救急:=B2*1 或 =VALUE(B2)<br>- 一整列:选中 → 数据 → 分列 → 直接点「完成」,不选任何分隔符<br>- 已经粘进来的:复制一格空单元格 → 选中整列 → 选择性粘贴 → 加
⚠️ 一个容易被忽略的变种:从网页上复制来的数字,后面跟的可能是不间断空格(NBSP)。这种空格 TRIM 去不掉、CLEAN 也去不掉,实测两个都还你 #VALUE!。
修法: =SUBSTITUTE(A2,UNICHAR(0160),"")*1
>
( 0160就是160,Excel 认前导零,别当成笔误。)
顺带说一句:网上流传的「用 CHAR(0160) 清 NBSP」,在中文 Excel 里实测指向的是普通空格(CODE(CHAR(0160)) 返回 32,不是 160),拿它去清 NBSP 是无效的。要清就用 UNICHAR。
03 第二种:日期存成了文本 —— 最阴的一种
这一节解决:为什么你按月份汇总,永远是 0。
先说结论:文本日期不是「完全不能用」,而是「大部分时候都能用,只在比大小的时候全废」。 这点最坑,因为前半句会让你放下戒心。

A1:C9。同一批日期,两种存法。按 10 月汇总,文本列给 0,日期列给 300
同一个 2026-10-01,存成文本,实测这些全正常:
- YEAR 取年份 → 2026<br>- MONTH 取月份 → 10<br>- DATEDIF 算天数 → 61<br>- 两个日期相减 → 30<br>- 精确匹配 COUNTIFS(...,"2026-10-01") → 1
看上去没毛病吧?但换成「按区间筛」:
- COUNTIFS 条件写 >=DATE(2026,10,1) → 0(同一批数据,日期格式列给 4)<br>- SUMIFS 按 10 月汇总 → 0(日期格式列给 300)
为什么:比较大小的时候,Excel 拿两个值直接比。日期格式的那个是真身,底层是数字 46296;文本格式的那个是字符串。字符串跟数字比大小,条件永远不成立 —— 不报错,只是一条都不匹配,汇总出来 0。
所以「按月份汇总」「按区间筛选」「条件格式标出逾期」「算某个时间段的天数」这一整类活儿,遇到文本日期全部静默归零。而「取年份」「算两个日期差」这类单点运算又都正常,你根本想不到是日期的问题。
⚠️ 这就是它比第一种更阴的地方:你随手抽一个公式验证,它是对的。
修法:
- 选中整列 → 数据 → 分列 → 第三步选「日期」→ YMD<br>- 或者 =DATEVALUE(A2),返回 46296 就是那一天的序列号
(2026.10.01 这种点号日期是另一回事,DATEVALUE 对它无效 —— 下一篇讲 #VALUE! 的时候会展开。)
04 还有两种「看着像算错了」
一是日期相减,结果显示 1900-01-30。

A1:B4。同样的 =B2-B1,上面那格还是日期格式,下面改成常规,就是 30
公式没错,结果也没错 —— 30 天。错的是单元格还带着日期格式:日期格式下,30 被当成序列号,从 1900 年 1 月 1 日数起,正好是 1900 年 1 月 30 日。
修法:右键 → 设置单元格格式 → 常规(或者数值)。
二是范围没盖住你的数据。
这一种连类型问题都没有,纯粹是范围写少了。假设 F 列四行金额是 100、200、300、400:
=SUM(F1:F4)得 1000
>
=SUM(F1:F3)得 600
少了一行,不报错,也不提示,就少 400。AI 是按你说的「四行」写的,可你的表要是早变成了五行,它不可能知道。
所以粘完公式,第一件事是点一下公式里的范围,看有没有盖到最后一个数据行。
05 三句话,让 AI 看见你的数据
回到根上:AI 看不见格子,只能靠你描述。那就把「它看不见、但会决定结果」的东西说进描述里。三句话,加起来不超过三十个字:
第一句,说格式。「B 列是文本格式的数字」比「B 列是数字」有用一百倍。它一听就知道要先转换,或者直接给你带 *1 的公式。
第二句,说有没有坑。 合并单元格、隐藏行、表头占了前两行、数据中间有空行 —— 这些都会让范围写错。
第三句,粘完自己验一遍。 两个公式就够:
=COUNT(B2:B100)数真数字, =COUNTA(B2:B100)数非空格子
>
两个数一样 → 全是真数字,放心算。 COUNT明显小 → 里面有文本混着。
日期列同理:COUNT 会把真日期当成数字数进去,文本日期不算。两个数一比,就知道有没有文本混着。
最后
这一篇讲的几种情况,我整理成了一张排查卡,在公众号回复「报错」直接取,回复「0」也可以。
下一篇讲 #VALUE! —— 这篇里的「算出 0」,是 SUM 一声不吭跳过了;而 #VALUE! 是 Excel 直接拦下来说「这一格我不认」。同一件事的两张脸,一个喊出来,一个不吭声。那篇里有个反常识的结论,估计会推翻你在别处看到的说法。














































































