在Excel中查找最近的坐标集

时间:2015-02-07 15:42:23

标签: excel worksheet-function

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

2 个答案:

答案 0 :(得分:6)

您可以尝试从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)

enter image description here

答案 1 :(得分:0)

这个问题在2006年被Tom Ogilvy here解决了,here也找到了。

我创建的示例:

enter image description here

原始问题:

  

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

     

列a的位置名称为   b列有x coedinate
  列c具有y坐标

     

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

Tom Ogilvy的原创解决方案:

  

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

     

如果您不想用公式填写表单,可以将其放在G1中   使用Ctrl + Shift + Enter提交/输入,而不是直接输入,因为它是   一个数组公式,然后拖动填充400行。

     

= INDEX($ A $ 1:$ A $ 20 MATCH(MIN(SQRT(($ 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)

相关问题