谷歌表格公式有时不适用于合并单元格

Mut*_*der 3 google-sheets google-sheets-formula

因此,我在 Google Sheets 中创建了一个发票电子表格,并广泛使用了合并单元格,以便为发票创建一个更清晰的外观。

这是我遇到的问题:有时,我的简单减法公式不会给我正确的结果。该公式应该从期初余额(单元格 R27)中减去未售出余额(单元格 V27)。

同样,公式本身没有任何问题,因为它在 99% 的情况下都能正常工作,但时不时地,它只会给我一个与期初余额相匹配的答案。

在此处输入图片说明

这里还有一个指向电子表格副本的链接,供任何愿意查看的人使用。https://docs.google.com/spreadsheets/d/1bf_QE-u36mo4AKyqg7Dk11gwoR0p5g0qveIazR83Xbk/edit?usp=sharing

有没有其他人遇到过这种情况?什么可能导致它,更重要的是,如何修复它以使其更可靠?

Eri*_*ler 5

我们这些专业开发 Sheets 解决方案的人有一些我们遵循并鼓励其他人不要违反的基本规则。其中包括“永远不要在将(或可能)执行或评估计算或比较的任何地方合并单元格。”

虽然您所看到的似乎是一个小故障,但我不会这么称呼它。合并的单元格并没有真正摆脱您看不到的单元格。例如,您的单元格 R27 不会“摆脱”单元格 S27、T27 和 U27。它只是将它们保存在内存中,大概是空的。但请记住,在 Sheets 的“内存”中,它不会“看到”网格。它只是1和0。当一个网格是新的并且没有单元格被合并时,Sheets 会“找到”每个单元格(使用我能给出的最好的类比),通过 1 和 0 来一遍又一遍地计数,这些单元格非常小且紧密排列。抱着这样的想法...

另请注意,许多人在进行多项复杂计算并得到与他们在计算链下游的单元格中期望的结果不同的返回答案时感到惊讶。这是因为表格使用浮动小数点。例如,“一除以三”约为0.333。但实际上,这延伸得很远:0.33333333333333333333。但这不能永远持续下去,否则 Sheets 将无法运行。所以在某些时候它会被截断。最终,这些额外的十进制附加值将开始增加并以小幅度增加(或减少)数字。所有这些都由运行其他所有内容的相同 1 和 0 处理。

回到合并的单元格。查找和准确地“阅读”合并单元格变得不太准确它们在合并更多,因为这个过程是相对在内存其他细胞的位置。一段时间后,表格的“浮动小数点”性质开始失去踪迹,特别是(我已经观察到)如果您使用与您正在使用的相同类型的相对公式引用(例如,很多您堆叠的合并单元格正在引用另一个合并单元格:BB2。因此(再次通过类比),Sheets 试图“通过使用线索猜测它在哪里。”也许它在合并单元格 Z-AA-AB-AC23 中找到了正确的东西引用合并单元格的合并单元格 BB2-BB3-BC2-BC3;但是那个时候合并单元格 VWX-Y24 ... 在下面的合并单元格集合 Z-AA-AB-AC24 中,您仍然要求 BB2-BB3-BC2-BC3 参考,而不是VWX-Y24 减法。等等...

除此之外,您还更改了整个地方的行高。有些设置为特定的高度,而另一些则适合数据。

你得到了图片。

如果 Sheets 试图通过从单元格 A1 来回移动来查找内容,但没有规律,有时,它只是举起手说:“我现在在哪里?” 当您然后重新加载工作表或删除并替换公式时,它再次从 A1 开始并在损坏的板上播放滑槽和梯子,并且可能会以与上次不同的方式移动一个“浮动”的小 1 或 0 ......并再次找到您希望它找到的内容。

得到了一个 56 列的工作表,而您可能只需要它是 12 或 15 列。同样,您已经将行数扩展到超出了所需的行数。所以你的处理速度减慢了很多。

简短版本:

尽管合并的单元格看起来不错,但它们是计算的噩梦。自从电子表格被发明以来,我就一直在使用它们,而且我真的从来不需要合并单元格(尽管我偶尔会在纯粹的美学领域使用它们)。

解决方案:

1.) 重新制作没有合并单元格的工作表。

-或者-

2.) 尝试在计算中包含所有合并但隐藏的单元格。这至少为 Sheets 提供了一个更广泛的网络。例如,在你上面的例子中,你引用了这个公式:

=IF($BB$2<>"Rental","",R27-V27)
Run Code Online (Sandbox Code Playgroud)

尝试(在可能的情况下)包括您合并的整个范围:

=IF($BB$2<>"Rental", "", SUM(R27:U27) - SUM(V27:Y27) )
Run Code Online (Sandbox Code Playgroud)

从技术上讲,您还可以在 BB2-BB3-BC2-BC3 合并中包含所有单元格:

=IF(AND($BB$2<>"Rental", $BB$3<>"Rental", $BC$2<>"Rental", $BC$3<>"Rental"), "", SUM(R27:U27) - SUM(V27:Y27) )
Run Code Online (Sandbox Code Playgroud)

但是,尝试仅使用 SUMmed 合并范围的较短路线,看看它是否成立。如果是这样,请坚持下去。如果没有,请继续引用您合并的范围内的每个单元格。

显然,您在设置此工作表方面付出了很多努力。所以我确定这不是您希望听到的简单答案。但我希望它确实为您提供了下一步的方向。