Menu

Excel 公式不计算:原因和解决方法

如果 Excel 显示的是公式而不是结果,说明单元格是文本格式、公式以撇号或空格开头,或者打开了“显示公式”。如果结果不更新,说明计算被设成了手动:公式 > 计算选项 > 自动。

本页的每张表格都是实时的:修改数字或公式,就会重新计算。

如果 Excel 把公式显示为文本而不是计算结果,说明单元格是文本格式,或者公式以撇号('=B2*C2)或空格开头。删掉撇号或空格,或者把单元格设为常规格式,然后点进单元格按 Enter。如果工作表上所有公式都显示为文本,说明打开了“显示公式”:按 Ctrl+` 关闭它。如果修改数字后结果不变,说明计算被设成了手动:选择 公式 > 计算选项 > 自动。

只是文本的公式
D2
ABCD
1ItemPriceQtyTotal
2Desk2402=B2*C2
3Chair854 =B3*C3
4Lamp403120
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

D2 和 D3 显示的是公式本身。D2 以撇号开头,撇号告诉 Excel“这是文本”,它在单元格中是隐藏的(在编辑栏中能看到)。D3 在 = 前面有一个空格。只有 D4 是公式,显示 120。点击 D2,删掉撇号,让单元格中的内容变成 =B2*C2,然后按 Enter:它会显示 480。

单元格是文本格式

文本格式的单元格会完全按输入的样子保存内容,公式也不例外。为了保留开头的零而把某列设为文本,或者导入数据时把某列的类型设成了文本,都会出现这种情况。

  1. 选中这些单元格,选择 开始 > 数字格式 > 常规(“数字”组中的下拉列表)。
  2. 只改格式还不够:Excel 只在输入公式时才会读取它。点进每个单元格(或按 F2),再按 Enter。
  3. 如果是整列,选中这一列,使用 数据 > 分列 > 完成。这会一次性重新输入所有单元格。

同样的步骤也能修复输入到文本单元格中的数字,这些数字无法参与求和(见下下节)。

打开了“显示公式”

如果工作表上所有公式都显示出文本,说明打开了“显示公式”:公式 > 显示公式,或者按 Ctrl+(Esc 下面的那个键;Mac 上为 Control+)。再按一次就能切换回来。这个键很容易误按。

结果还是公式
D2
ABCD
1ItemPriceQtyTotal
2Desk2402480
3Chair854340
4Lamp403120
5Total940
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

点击这个表格上方的 公式:每个单元格都会显示它的公式,就像 Excel 的“显示公式”一样。再点一次,就能看到 480、340、120 和合计 940。这个模式属于工作表而不是工作簿,所以其他工作表仍然可以显示结果。

以文本形式存储的数字:SUM 返回 0 或结果偏小

公式没有问题,但它加总的一些数字是文本。SUM 会跳过文本而不报任何错误,所以合计只是偏小。

有两个数字是文本
B7
ABC
1MonthSalesType
2Jan120number
3Feb80text
4Mar95number
5Apr60text
6
7Total215
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

B7 显示 215,只是 1 月和 3 月的和。在 Excel 中,文本形式的数字靠单元格左侧对齐,并带有一个绿色三角;选中它们,点击警告图标并选择 转换为数字。如果数据是从你无法修改的来源刷新而来的,就在公式内部转换,就像本页最后的练习那样。文本转数字一文列出了所有方法。

计算被设成了手动

在手动模式下,公式会一直保留旧的结果,直到你重新计算。表格看起来没问题,但数字已经过时了;向下复制的公式在每一行都显示第一行的结果。

  • 切换回来:公式 > 计算选项 > 自动。
  • 不切换,只重新计算一次:F9 重新计算所有打开的工作簿,Shift+F9 重新计算当前工作表,Ctrl+Alt+F9 重新计算每一个公式。Mac 上为 Cmd+= 和 Shift+Cmd+=。
  • 除模拟运算表外,自动重算 也会让模拟运算表(模拟分析)中的结果过时。

手动模式会“传染”:Excel 在一次会话中会沿用第一个打开的工作簿的计算模式,所以一个以手动模式保存的文件,会让之后打开的所有文件都变成手动模式。非常大的工作簿有时会特意设成手动,避免每次编辑后都重新计算;这时如果结果已经过时,状态栏会显示 计算。

公式在计算,但结果不是你想要的

有时大家抱怨“公式不起作用”,而 Excel 其实正按写好的公式在计算。常见的情况有三种:

  • 复制公式时引用跟着移动了。 某个单元格里的税率,如果引用时没加 $,就会随公式一起往下滑,下面的行就成了乘以空单元格。
  • 循环引用。 公式依赖于它自己的结果,Excel 会显示 0,并在状态栏中给出警告。见循环引用。
  • 显示的是错误名称而不是数字,例如函数名拼错时的 #NAME?。每种错误在本章中都有单独的页面。
往下滑的税率
D3
ABCDEF
1ItemPriceWith taxTax rate
2Desk24028820%
3Chair8585
4Lamp4040
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

D2 是对的(288),但 D3 显示 85,D4 显示 40:它们的公式读取的是空的 F3 和 F4,所以税是 0。点击 D2,把 F2 改成 $F$2,整列就都对了。原因见绝对引用。

对以文本形式存储的数字求和

对以文本形式存储的数字求和
B6
AB
1MonthSales
2Jan120
3Feb80
4Mar95
5Apr60
6Total
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 2 月和 4 月的数据导入时变成了文本,所以 =SUM(B2:B5) 漏掉了它们。在 B6 中写一个公式,把四个月全部加起来。

--(两个减号)会把每个值都变成数字:看起来像数字的文本会被转换,真正的数字保持不变。=SUMPRODUCT(B2:B5*1) 和 =SUM(VALUE(B2:B5)) 的效果相同。公式写对之后,无论有多少个单元格是文本,它都能正常工作。

常见问题

为什么 Excel 显示的是公式而不是结果?

可能是输入公式之前单元格就被设成了文本格式,或者公式以撇号或空格开头,或者打开了“显示公式”。把格式设为常规(开始 > 数字格式 > 常规),点进单元格后按 Enter;如果工作表上所有公式都显示为文本,按 Ctrl+`。

为什么我的 Excel 公式不自动更新?

计算被设成了手动。打开 公式 > 计算选项,选择 自动。在此之前,按 F9 重新计算工作簿,按 Shift+F9 重新计算当前工作表。以手动模式保存的工作簿,还会把之后打开的所有工作簿都切换成手动模式。

为什么我的合计漏掉了一些数字?

这些数字是以文本形式存储的(常见于导入数据之后),而 SUM 会跳过文本,也不报错。它们通常靠单元格左侧对齐,角上有一个绿色三角。选中它们,点击警告图标并选择 转换为数字,或者用 =SUMPRODUCT(--B2:B5) 求和。

怎样强制 Excel 重新计算?

按 F9 重新计算所有打开的工作簿,按 Shift+F9 重新计算当前工作表,按 Ctrl+Alt+F9 则会重新计算每一个公式,即使 Excel 认为什么都没变。在 Mac 上,Cmd+= 重新计算,Shift+Cmd+= 重新计算当前工作表。

Coddy 编程语言插图

和 Coddy 一起学编程

开始