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

标签 vba excel

我的目标是找到离某个点最近的点。我有一个到不同点的坐标列表,我想找到最接近不在该列表中的某个点(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/

相关文章:

sql - 在 Access VBA 中附加到表时出错

vba - 如何通过 VBA 获取/设置 Excel 中单元格的唯一 ID

vba - 使用 VBA 的方差协方差矩阵

vba - 确定VBE是否打开

Excel:删除 TEXTJOIN 公式的重复结果

c# - vba/excel/c#将WorkSheet分割成多个文件的解决方法#

excel - 使用 ADO 将 Excel 电子表格导入数组的更快方法

php - 在php中excel到json

excel - 找出每周每种酒精单位最多的人与多少人同住

c# - 解析现有的 "complex"SQL 语句并转换为对自定义 API 调用的调用