1

我正在尝试编写一个 Excel 宏,它将根据它们的 x 和 y 坐标计算点之间的累积距离。这是我当前工作表设置的示例:

Point #       Code     x coordinate    y coordinate   Cumulative distance between points

 1            1           39.4             99.8                       0
 2            1           42.5             104.5                      ?
 3            1           43.0             105.8                      ?   
 4            2           34.0             150.5                      ?
 5            3           38.9             145.9                      ?
 6            1           46.2             103.4                      ?
 7            1           48.5             105.3                      ?
 8            4           67.6             98.5                       ?
 9            1           50.3             103.2                      ?

我需要“点之间的累积距离”列来使用毕达哥拉斯公式计算点与前一点之间的距离=SQRT(((D2-D1)^2)+((C2-C1)^2))))。对于“点之间的累积距离”列中的每个后续值,该值必须计算先前点之间的距离,并添加计算出的所有距离的总和。

这是踢球者。如果它们的代码均为“1”,我只想计算两点之间的距离。如果您查看我的示例,您会看到我的代码值在 1-4 之间。

因此,在上面的示例中,我想计算点 #2 和 1 之间的距离。接下来,我将计算点 #3 和 2 之间的距离,并将其添加到从列中的前一个单元格获得的值中 ( =点#2和1之间的距离)。接下来我将跳过第 4 点和第 5 点,因为它们没有代码 =“1”。下一个计算将在第 6 点和第 3 点之间进行,因为它们的代码 =“1”。第 8 点将被跳过,因为代码 =“4”。然后计算点 #9 和 7 之间的距离。请记住,每次在“点之间的累积距离”列中计算一个值时,它必须是一个累积值,它将所有先前的值加到它上面。

所以总结一下,我需要以下内容:

- 在“点之间的累积距离”列中计算两个代码 = 1 时点之间的距离(使用 x、y 坐标)。 - 将先前的累积距离添加到单元格值以获得运行总距离。

我希望这很清楚,否则我可以填写任何令人困惑的空白。

4

1 回答 1

0

您可以在工作表上执行此操作,尽管有一些额外的列。

1) 创建两个新列“复制的 x”和“复制的 y”。将公式放在这些列中,如果一行上的代码为 1,则复制该行上的 x 和 y。对于任何其他代码,从前一行复制复制的x 和 y 值。使用 Excel函数来执行此操作。IF

2)计算所有连续“复制的x”和“复制的y”的累积毕达哥拉斯差异。它将为代码不是 1 的任何行添加零贡献。这是您添加的最后一列。

于 2014-02-18T14:10:01.137 回答