Excel - 手动修改 ListObject 总计行中的值会导致问题

Excel - 手动修改 ListObject 总计行中的值会导致问题

在 Excel 中使用 ListObject(表格)时发现以下问题。

假设我得到以下信息:

  • 有三列的表格,A,B,C,所有数字
  • C 列按简单的 A*B 计算,即=[@A]*[@B]
  • 对 C 列进行求和的总计行,即=SUBTOTAL(109;[C])
  • 该总计值是从其他地方引用的,即汇总总计的表格,如=Table1[[#Totals];[C]]

想象一张表格,其中金额和价格相乘然后加总为总价。

只要不执行以下操作,一切即可正常工作:

  • 手动更改总计字段的值,例如将其替换=SUBTOTAL(109;[C])为 500

如果你这样做,则会发生以下情况:

  • 总计字段中显示的值和引用它的单元格不再像以前那样对齐 - 即从右对齐变为左对齐,这就是我们弄清楚发生了什么事情的方式
  • 例如,SUM 函数会忽略该值

进行手动更改的原因在于用户强行将值修改为他们想要的(例如,将“xxx,yz €”修改为“nice xxx,00 €”,他们按照他们认为应该的方式和地点进行修改,而我没有权力告诉他们不要这样做。

工作状态和非工作状态没有明显区别。有没有人遇到过这种情况,知道为什么会发生这种情况,以及我可以做些什么来防止这种情况发生,使整个事情更加健壮,即使在不应该进行手动更改的地方进行更改?

答案1

我无法获得能够解决我在这里进行实验时看到的变化的真相的材料,因此,我所能说的就是发生了什么,无论出于什么原因,Excel 都将手动输入视为文本。

但是,它仍然可以被 Excel 用作数字,并且以多种方式使用,因此您可以选择最喜欢的解决方案。

最简单的方法根本不可用。那就是不插入总计行,而是手动输入公式(或不同的公式)。但即使是简单地在SUM()表格结束后输入行,也会让 Excel 将该行更改为总计行,并给您带来同样的问题。感谢 Excel,对吧?

如果您正在使用它,并且您可以完全自由地执行操作,您可以强制(用 Excel 术语来说就是“强制”)Excel 仍然将条目视为数字,只需记住输入第一个数字=(所以=500不是500)。一切都很好。但是您没有这样做,所以您必须在用户更改的单元格的“下游”进行强制操作。

一种方法是更改​​下游公式,使其不从该单元格和公式中获取值,而是重新计算总和。理论上有理由不这样做,其中一个原因是无意中错配了本应相同的值,但这里唯一重要的事情是,它们会流行起来并开始破坏你在其他地方的工作,也许比现在更糟糕。

因此,您需要接受他们对那个位置的改动,因为现在唯一的问题是他们这样做了,并且把下游的事情搞乱了,而不是他们破坏了电子表格本身的结构。这意味着继续引用您所做的那个单元格并在那里修复下游的问题。您没有提到这一点,但我相信您已经意识到,或者他们已经说过,如果他们不能像现在这样改变事情并看到他们的改变的正确效果,他们也会开始破坏那里。

幸运的是,这很容易做到。最简单的方法是:

=Table1[[#Totals],[C]]*1

或 =Table1[[#Totals],[C]]+0

这就是全部了。你可以使用VALUE()环绕引用(也就是说,因为它是一个引用,而不是几个引用的组合)。这似乎更容易维护。这些都很简单、快速、直接。

=VALUE(Table1[[#Totals],[C]])

只要您看到对齐偏移,您就会发现 Excel 会将单元格的内容视为文本而不是数值。发生这种情况时,您可以直接解决它(如果可能,当然不是在这里),方法是用六种可行的方法中的任意一种修复基本条目,或者通过下游处理它,也许如上所述。

答案2

在字段中手动输入的任何值都会用固定值替换公式。

没有解决方案,除非重新加载工作表以重新建立公式。

或者也许用两个字段替换这个字段,一个计算,另一个可手动更改。

相关内容