如何编写一个将计算点之间累积距离的Excelmacros

我正在尝试编写一个Excelmacros,它将根据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坐标)。 – 将以前的累计距离添加到单元格值,以获得距离的总计距离。

我希望这是清楚的,如果不是,我可以填补任何混乱的空白。

你可以在工作表上做到这一点,虽然有一些额外的列。

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

2)计算所有连续的“复制的x”和“复制的y”上的累计毕达哥拉斯差异。 对于代码不是1的任何行,它都会添加零。这是您添加的最后一列。