对 Excel 表格中的公式进行排序

Cas*_*040 3 sorting worksheet-function microsoft-excel

对于我的项目,我需要根据前往不同地点的最短驾驶时间来安排地点。我模拟了行驶距离(D行、E行和F行),但高度取决于不同级别输入的产品。该公式采用行驶距离(D、E 和 F)和高度(G 行)并计算行驶时间(L、M 和 N 行)。

我现在想对行驶时间结果进行排序,以便我可以输入产品,但这会破坏表格,因为公式会出错。我怎样才能使表格可以按时间排序而不会破坏我的公式?

图一显示了表格,它有 6000 多个单元格长(因此手动输入它不是一种选择)

表格概览

图二显示了时间的公式,它基本上将结果四舍五入三位小数(AFRONDEN = ROUNDING)并使用if公式来检查高度是否为零,使其成为楼层高度,或更高,使其成为一个位置空气。

时间公式

图三显示了公式排序时发生的情况,它基本上给出了“值”和“参考”错误。

排序后出错

这些是 G 行中的公式

G 行中的公式

我希望任何人都可以帮助我解决这个问题

mar*_*ick 6

看起来您的 Col G(高度)有一个公式,该公式取决于当前行上方或下方的行值(我的猜测)。这将导致他们 G 每次对表进行排序时重新计算。REF 错误意味着排序导致 G 引用了一个不存在的单元格。VALUE 错误可能是由错误引用引起的内部公式计算问题引起的。G 中的错误会级联到 N(看起来像 M & L。

借助您的评论,这是另一种方法:

方法一

不知道 G 中的公式,您能否创建一次,然后将其复制/粘贴为值?它不会在每次排序时重新计算,但如果这是可以接受的,它将解决问题。

方法二

您可以为原始排序顺序创建一个 SortKey。这将允许您维护您开始的引用。

一个警告:您将使用 XLOOKUP 或 INDEX 替换直接单元格引用,因此这确实会减慢您的 6000 行工作簿的速度,但让我们看看...

这是您的工作表的简化模拟:

在此处输入图片说明

G 中的公式取决于[Other stuff]列中的相同行数据以及I(其他内容)和K(Act Height)列的上下行数据。如果你排序这个,它会产生垃圾。

所以现在我将在名为SortKey的表中引入一个新列,它只是按原始顺序保存行的枚举。

现在该表如下所示:

在此处输入图片说明

G 中的新公式用 XLOOKUP 替换对列 I 和 K 的直接引用,该 XLOOKUP 搜索 SortKey +/- 1 并返回 I 和 K 中的相应值。 所以我们在 G 中转换了这个公式:

=( [@[Other Stuff]] - N( I5 ) )
  / ( N( I7 ) - [@[Other Stuff]] )
  / ( N( K5 ) + 1 )
Run Code Online (Sandbox Code Playgroud)

对这个:

=( [@[Other Stuff]] - N( XLOOKUP( [@SortKey]-1, [SortKey], [Other Stuff] ) ) )
   / ( N( XLOOKUP( [@SortKey]+1, [SortKey], [Other Stuff] ) ) - [@[Other Stuff]] )
   / ( N( XLOOKUP( [@SortKey]-1, [SortKey], [Act Height] ) ) + 1 )
Run Code Online (Sandbox Code Playgroud)

排序时,G 中的值会保留:

在此处输入图片说明

但请注意 G 中的 N/A 错误 - 这是因为 XLOOKUP 尝试引用不存在的 SortKey 值。它要么引用了最后一行下面的一行,要么引用了第一行上面的一行。为了防止这种情况发生,您需要告诉 XLOOKUP 在发生这种情况时要交付什么价值。这是第四个参数 - 我在这里留空。

方法三

您可以按原始顺序对列进行排序,然后选择列 G 并执行 REPLACE ALL 以将 K 更改为 K$(假设公式中没有其他带有 K 的单词,例如 KOLOM 或 TEKEN)。这将是一种进行批量编辑以创建相当于 F4ing 通往幸福之路的方法。

我能想到的就这些。