如何在Excel中找到给定经纬度的前3个最近位置?

jum4pzuy  于 2023-02-17  发布在  其他
关注(0)|答案(3)|浏览(425)

所以我在Excel中有2个工作表,分别命名为Sheet 1和Sheet 2。表格结构如下所示:
表1

表2

我想找到从Sheet 1到Sheet 2的3个最近位置。预期输出示例应为:

我已经试过=LOOKUP(1,1/FREQUENCY(0,MMULT((Sheet2!B$2:C$5-Sheet1!B2:C2)^2,{1;1})), Sheet2!A$2:A$5)了,但是它只给了我一个最近的位置。
Excel版本:电子表格365
先谢了!

yjghlzjz

yjghlzjz1#

好吧,冒着计算距离出错的风险,试试看:

E1中的公式:

=REDUCE("Nearest #"&{1,2,3},ROW(A2:A6),LAMBDA(x,y,VSTACK(x,TAKE(TOROW(SORTBY(A9:A13,ABS(INDEX(B:B,y)-B9:B13)+ABS(INDEX(C:C,y)-C9:C13))),,3))))

使用ABS(lat1-lat2)+ABS(long1-long2)计算距离得到的结果与使用this等更复杂的公式计算实际距离(比如英里)得到的结果完全相同。您确定想要的结果吗?

k75qkfdt

k75qkfdt2#

例如,vlookup()用于在两个X值之间进行直线插值,以给予计算出的Y值。

=VLOOKUP(A2,$A$5:$B$8,2,1)+((A2-(VLOOKUP(A2+5,$A$5:$B$8,1,1)-VLOOKUP(A2,$A$5:$B$8,1,1)))/(VLOOKUP(A2+5,$A$5:$B$8,1,1)-VLOOKUP(A2,$A$5:$B$8,1,1)))*(VLOOKUP(A2+5,$A$5:$B$8,2,1)-VLOOKUP(A2,$A$5:$B$8,2,1))

用这个来从蒸汽表又名水和空气的属性表中获得温度,密度等。

34gzjxbg

34gzjxbg3#

我已经使用Pythagoras distance通过SUMPRODUCT和INDEX计算最近位置。
表1:

表2:

请注意,我只添加了一个包含Alpacca的test列和一个rank列,只是为了检查我的输出,但您并不需要它们。
数组公式(必须按CTRL + SHIFT + ENTER引入:

=INDEX(Sheet2!$A$2:$A$6,SUMPRODUCT(--(SMALL (SQRT (($B2-Sheet2!$B$2:$B$6)^2+($C2-Sheet2!$C$2:$C$6)^2), RIGHT (D$1,1))= SQRT (($B2-Sheet2!$B$2:$B$6)^2+($C2-Sheet2!$C$2:$C$6)^2))*ROW(Sheet2!$A$2:$A$6))-1)

如果两个或多个位置恰好在同一距离上,公式将不起作用,并将返回错误的输出。

相关问题