所以我在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先谢了!
=LOOKUP(1,1/FREQUENCY(0,MMULT((Sheet2!B$2:C$5-Sheet1!B2:C2)^2,{1;1})), Sheet2!A$2:A$5)
yjghlzjz1#
好吧,冒着计算距离出错的风险,试试看:
E1中的公式:
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等更复杂的公式计算实际距离(比如英里)得到的结果完全相同。您确定想要的结果吗?
ABS(lat1-lat2)+ABS(long1-long2)
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))
用这个来从蒸汽表又名水和空气的属性表中获得温度,密度等。
34gzjxbg3#
我已经使用Pythagoras distance通过SUMPRODUCT和INDEX计算最近位置。表1:
表2:
请注意,我只添加了一个包含Alpacca的test列和一个rank列,只是为了检查我的输出,但您并不需要它们。数组公式(必须按CTRL + SHIFT + ENTER引入:
Alpacca
=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)
如果两个或多个位置恰好在同一距离上,公式将不起作用,并将返回错误的输出。
3条答案
按热度按时间yjghlzjz1#
好吧,冒着计算距离出错的风险,试试看:
E1
中的公式:使用
ABS(lat1-lat2)+ABS(long1-long2)
计算距离得到的结果与使用this等更复杂的公式计算实际距离(比如英里)得到的结果完全相同。您确定想要的结果吗?k75qkfdt2#
例如,vlookup()用于在两个X值之间进行直线插值,以给予计算出的Y值。
用这个来从蒸汽表又名水和空气的属性表中获得温度,密度等。
34gzjxbg3#
我已经使用Pythagoras distance通过SUMPRODUCT和INDEX计算最近位置。
表1:
表2:
请注意,我只添加了一个包含
Alpacca
的test列和一个rank列,只是为了检查我的输出,但您并不需要它们。数组公式(必须按CTRL + SHIFT + ENTER引入:
如果两个或多个位置恰好在同一距离上,公式将不起作用,并将返回错误的输出。