在Excel中查找最近的一组坐标

有两个表,每个表都有一个坐标对:经度和纬度,以十进制度表示(即37.23222,-121,3433)。 我如何将表A与表B中最接近的坐标对相匹配?

你可以尝试从G1填充这个公式,如下所示:

 =LOOKUP(1,1/FREQUENCY(0,MMULT((B$1:C$10-E1:F1)^2,{1;1})),A$1:A$10) 

对于一个更精确的公式,考虑到循环距离尝试从H1填充:

=LOOKUP(1,1/FREQUENCY(0,SIN((RADIANS(B$1:B$10-E1))/2)^2+SIN((RADIANS(C$1:C$10-F1))/2)^2*COS(RADIANS(B$1:B$10))*COS(RADIANS(E1))),A$1:A$10)

在这里输入图像说明

这个问题在2006年被Tom Ogilvy解决了,在这里也find了 。

我创build的示例:

在这里输入图像说明

原始问题:

我在坐标中有20个命名的位置。 每个点都有x,y。

列a具有位置名称
栏b有x cooedinate
列c具有y坐标

现在我在2列(列e和f)中有400个坐标,并且想要列g中最近的位置(在列a中命名的20)的名称。

Tom Ogilvy原创解决scheme:

假设原始数据在A1,B1和C1中开始,其中E1和F1中的第一个位置

如果你不想用公式填充你的工作表,你可以把它放在G1提交/inputCtrl + Shift + Enter,而不是只input,因为它是一个数组公式,然后将其填充到400行。

=($($ B $ 1 $ B $ 20-E1)^ 2 +($ C $ 1:$ C $ 20-F1)^ 2)),SQRT(( $ B $ 1:$ B $ 20 E1)^ 2 +($ C $ 1:$ C $ 20 F1)^ 2),0),1)