首页 > 文章 > Excel表格 > Excel公式有结果,比对却报缺失缓存?先重算保存,再检查旧值

Excel公式有结果,比对却报缺失缓存?先重算保存,再检查旧值

Excel两表比对

点击使用相关工具

去使用

“检测到缺失缓存结果的公式;请在Excel中重新计算并保存后再处理”,提示说的不是公式写错了,而是文件里没有可供读取的计算结果。Excel两表比对比较的是已经存下来的值,不会在网页里执行公式,也不会替你访问公式引用的文件。

公式表达式和结果是两份信息。单元格可以保存10×2这条计算规则,也可以保存上次计算得到的20。生成或修改.xlsx的程序不一定同时写入结果;有缓存的文件也不代表缓存一定最新。看到熟悉的公式,不足以证明在线读取到的金额就是现在应有的金额。

用两个编号区分“没变”“读到旧值”和“拒绝处理”

准备旧表formula-old.xlsx,工作表名Data,第一行填“编号、金额”,后面两行是文本编号001对应数值20、文本编号002对应数值0。关键列选编号,比较列选金额,旧表放在第一位。

新表同样有001、002。001的金额公式为=10*2,002为=0*2。下面三种测试文件只有001的已保存结果不同,公式本身相同。本文分别构造真实.xlsx文件,逐一读取并验证;正常文件可在本地Excel计算、保存后准备,过期和缺失缓存用于说明边界,不建议在业务原件上人为制造。

新表001的缓存比对结果说明
20新增0、删除0、修改0、未变2读取20,与旧表相同
18新增0、删除0、修改1、未变1001的金额差异是20到18
缺失提示缺失缓存,停止处理不生成把空值当金额的结果

前两种成功结果都提示“读取2个公式的缓存结果,未重新计算”。第二种虽然公式写着10×2,网页仍读取18。这个差异反映文件保存的状态,不证明业务金额真的从20降到了18,更不能据此调整账务。

002的缓存0在三份新表中都存在。0是有效数值,不等于没有缓存,也不应因为金额为0就删除整行。缺失缓存的第三份表会整体停止,002有效并不能让其他坏记录被跳过。

先让计算结果落到文件里

  1. 留一份原文件副本,在可信的本地Excel中打开待比较的版本,核对选中的工作表及编号列。
  2. 检查计算选项和关键公式结果。Microsoft的公式重新计算说明可用于确认自动、手动计算等设置;执行适当的重新计算后再保存为.xlsx。
  3. 关闭并重新打开保存后的副本,复核几个关键金额。若原公式依赖外部工作簿或宏,先在本地得到经过核对的静态数据副本;本站不接受含宏、外部链接或加密的工作簿。
  4. 回到比对工具,重置并重新选择刚保存的文件,再选编号和金额处理。只修改磁盘文件,不会自动替换网页中已经选入的旧文件。

如果交付只需要金额而不需要计算规则,可以在副本里复制已核对的数据区域,选择性粘贴为值,再保存。先确认计算结果正确,再做这一步;把过期的18粘贴为值,只会把过期结果固定下来。金额20也不能用文本“20”随意替代,类型变化会影响比较。

别把比对下载当成公式备份

成功结果包含Summary统计与Differences差异等工作表,输出保存的是数据值,不保留公式执行过程。数值0会保留,公式和链接会移除。仍要保留计算逻辑时,原工作簿应单独留存。

同一份数据接着用于Excel多文件合并或按列去重,也要先处理公式缓存问题。编号重复导致冲突属于另一类问题,可查阅用组合关键列比对的实例。

错误值如#DIV/0!能当作空金额吗?不能。本工具会拒绝错误单元格。应先查清业务上是缺少分母、公式引用错误还是另有原因,再准备合法数据。

有缓存就能保证数据正确吗?不能。缓存缺失可以检测,缓存过期通常无法仅凭文件判断。用两表比对得到差异后,还应核对来源版本和更新时间,涉及重要数据时再回到原表复核。

立即使用Excel两表比对