有两个表,每个表都有一个坐标对:经度和纬度,十进制度(即37.23222,-121,3433)。如何将表A与表B中最近的坐标对匹配?
答案 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)
答案 1 :(得分:0)
这个问题在2006年被Tom Ogilvy here解决了,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)