首页 > 解决方案 > 计算两个单元格之间的路线,区分“陆地”和“水”单元格

问题描述

世界地图

我正在使用 Excel 和 VBA 进行 D&D,并制作了一张在不同单元格之间分离资源的世界地图。我用它来计算城镇和资源之间的距离,这样我就可以计算出每磅资源的价格。

为了找到两点(资源和城镇)之间的距离,我使用这个公式:

=SQRT(([@ROW]-$C$2)^2+([@COLUMN]-$D$2)^2)

这将使用列和行的差异作为三角形的另一侧来找到两点之间的斜边。

但是,我需要更进一步,并且有办法判断斜边是穿过水砖还是穿过陆地。

标签: excelvba

解决方案


您需要一个函数来为您提供沿斜边的单元格列表。然后你测试每个细胞,看看它是陆地还是水。

步骤 1:确定垂直或水平的最大距离

第 2 步:用最小距离除以最大距离。这个比率是你在最小方向上移动的距离对于最大的每个单位。

第 3 步:为最大距离执行 for 循环 x 到 y 步骤 1。对于循环的每次迭代,累积地添加从 2 到最小起始位置的比率。从当前最大的单元格参考加上开始的(整数+1)部分加上最短方向的累积移动距离。


推荐阅读