gpt4 book ai didi

vba - 在 VBA 的帮助下找到最近的坐标

转载 作者:行者123 更新时间:2023-12-04 20:40:35 27 4
gpt4 key购买 nike

我的目标是找到离某个点最近的点。我有一个到不同点的坐标列表,我想找到最接近不在该列表中的某个点(Point1)。

使用 MIN 函数,我可以找到 Point1 和列表中最近点之间的最近距离。

问题是我找不到该点的坐标(或至少一个坐标)。为此,我认为我需要使用 VBA。

我会使用 VBA 在一个坐标(例如 x)的列中找到我正在寻找的点的一个坐标(距离最近的点)。我编写了一个简单的代码,如果我添加我的 if 条件,它应该会给我我想要的东西,但它不起作用。我将在代码中使用的 if 条件是:

如果 columnx = (SQRT(Abs((distance) ^ 2 - ((columny - pt1y) ^ 2))) + pt1x) 那么
pt2x = 列x

pt2x 是函数名,Point1 的 pt1y-y 坐标,Point1 的 pt1x - x 坐标,其余的你应该明白。

我写的代码是:

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 公式在某些情况下没有给出正确的答案,所以我想尝试不同的方法。

最佳答案

p = K23S应该是 K23S = p .

添加 Option Explicit也到模块的顶部,因为它应该识别这样的编译错误。

此外,您错误地进行了范围分配。

Function K23S(l As Range, s As Range) As Variant
Dim K() As Variant
Dim M() As Variant

K = l.Value
M = 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
K23S = K(i)
Exit Function
End If
Next j
Next i
K23S = "Default Value"
End Function

当它找到匹配项和默认返回值时,我还在您的函数上添加了一个提前退出(以防它找不到任何东西)。

关于vba - 在 VBA 的帮助下找到最近的坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34360304/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com