在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)