【发布时间】:2015-12-21 23:59:14
【问题描述】:
我的目标是找到离某个点最近的点。我有一个不同点的坐标列表,我想找到最接近不在该列表中的某个点 (Point1)。
使用 MIN 函数,我可以找到 Point1 和列表中最近点之间的最近距离。
问题是我找不到那个点的坐标(或至少一个坐标)。为此,我认为我需要使用 VBA。
我会使用 VBA 在一个坐标(例如 x)的列中找到我正在寻找的点的一个坐标(距离最近的点)。我编写了一个简单的代码,如果我添加我的 if 条件,它应该会给我我想要的东西,但它不起作用。我将在代码中使用的 if 条件是:
如果 columnx = (SQRT(Abs((distance) ^ 2 - ((columny - pt1y) ^ 2))) + pt1x) 那么 pt2x = columnx
pt2x就是函数名,pt1y-y坐标Point1,pt1x-x坐标Point1,其余的你要明白。
我写的代码是:
Function K23S(l As Range, s As Range) As Variant
Dim K() As Variant
K = Range("l").Value
Dim M() As Variant
M = Range("s").Value
Dim i As Long
Dim j As Long
For i = LBound(K) To UBound(K)
For j = LBound(M) To UBound(M)
If K(i) = M(j) Then
p = K(i)
End If
Next j
Next i
p = K23S
End Function
它比较两列(例如 A1:A32 和 B1:B32),如果同一行中的值匹配(如果它们从同一行开始),则应该给出一个值。目前它给出了#VALUE!错误。我也尝试过 For Each,但结果是一样的。单元格中的值格式正确。
我做错了什么?或者您可以提供不同的解决方案?
我用过这个链接,也许有助于理解:http://excelmacromastery.com/Blog/index.php/the-complete-guide-to-using-arrays-in-excel-vba/
*在某些情况下,在互联网上找到的 Excel 公式无法给出正确答案,因此我想尝试不同的方法。
【问题讨论】: