You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Excel 365中根据经纬度查找前3个最近地点

解决Excel 365中提取前3个最近地点的问题

针对你需要从Sheet2中找出Sheet1每个地点对应的前3个最近地点的需求,之前的LOOKUP公式仅能返回单个结果,你可以利用Excel 365的动态数组函数实现批量提取,以下是两种实用方案:

方案1:将前3个地点合并为逗号分隔文本(单单元格输出)

在Sheet1的D2单元格输入以下公式,公式会自动向下溢出到所有行:

=BYROW(B2:C10,LAMBDA(x,TEXTJOIN(", ",TRUE,INDEX(Sheet2!A$2:A$5,SORTBY(SEQUENCE(ROWS(Sheet2!A$2:A$5)),MMULT((Sheet2!B$2:C$5-x)^2,{1;1}),1),SEQUENCE(3)))))

公式说明:

  • BYROW(B2:C10,LAMBDA(x,...)):遍历Sheet1中每一行的坐标数据
  • MMULT((Sheet2!B$2:C$5-x)^2,{1;1}):计算当前地点与Sheet2所有地点的坐标差平方和(无需开根号,排序结果和实际距离一致)
  • SORTBY(...):按距离平方从小到大排序Sheet2地点的行号
  • INDEX(..., SEQUENCE(3)):提取排序后的前3个地点名称,用TEXTJOIN合并为文本

方案2:将前3个地点分别放在不同单元格(多列输出)

在Sheet1的D2单元格输入以下公式,向右拖动到F2,再向下拖动到所有行(Excel 365中直接输入后会自动溢出):

=INDEX(Sheet2!A$2:A$5,SORTBY(SEQUENCE(ROWS(Sheet2!A$2:A$5)),MMULT((Sheet2!B$2:C$5-B2:C2)^2,{1;1}),1),COLUMN(A1))

公式说明:

  • COLUMN(A1):随着单元格向右拖动,依次取排序后的第1、2、3个结果
  • 其余部分逻辑和方案1一致,只是将合并文本改为单独提取每个地点

注意事项

  • 请根据你的实际数据范围,调整公式中的Sheet2!A$2:A$5、Sheet2!B$2:C$5以及Sheet1!B2:C10区域
  • 确保你的Excel版本支持动态数组函数(Excel 365或2021及以上)

内容的提问来源于stack exchange,提问作者arnold_p

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 00:05:20