如何编写将计算点之间累积距离的Excel宏

时间:2014-02-18 13:56:26

标签: excel excel-vba pythagorean vba

我正在尝试编写一个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"。当代码=" 4"时,将跳过第8点。然后计算点#9和7之间的距离。请记住,每次在点之间的累积距离中计算一个值"列必须是一个累加值,它将所有以前的值添加到它。

所以要把它包起来,我需要以下内容:

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

我希望这很清楚,如果不是,我可以填补任何令人困惑的空白。

1 个答案:

答案 0 :(得分:0)

您可以在工作表上执行此操作,但需要添加一些额外的列。

1)创建两个新列"复制x"并且"复制了y"。将公式放在这些列中,如果行上的代码为1,则复制该行上的x和y列 。对于任何其他代码,请复制上一个行中的复制的 x和y值。使用Excel IF功能执行此操作。

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