我正在尝试编写一个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坐标)。 - 将以前的累积距离添加到单元格值以获得运行的总距离。
我希望这很清楚,如果不是,我可以填补任何令人困惑的空白。
答案 0 :(得分:0)
您可以在工作表上执行此操作,但需要添加一些额外的列。
1)创建两个新列"复制x"并且"复制了y"。将公式放在这些列中,如果行上的代码为1,则复制该行上的x和y列 。对于任何其他代码,请复制上一个行中的复制的 x和y值。使用Excel IF
功能执行此操作。
2)计算所有连续"复制的x"的累积毕达哥拉斯差异。并且"复制了y"。它将为代码不是1的任何行添加零贡献。这是您添加的最后一列。