ฉันมีสเปรดชีตขนาดใหญ่ (& gt; 15000 แถว) ที่มีชื่อ บริษัท สถานที่หมายเลขการผลิตและละติจูด / ลองจิจูดของสถานที่ ตารางตัวอย่าง
ฉันกำลังพยายามเปรียบเทียบละติจูดและลองจิจูดแต่ละพิกัดกับคนอื่น ๆ ทั้งหมดเพื่อหาค่าที่อยู่ภายใน 0.01 องศา มาเรียกคอลเล็กชันตำแหน่งเหล่านี้ว่า "พื้นที่" จากนั้นฉันต้องการได้รับยอดขาย / วันและยอดรวม / วันสำหรับแต่ละพื้นที่เหล่านั้น ฉันพยายามโจมตีเรื่องนี้โดยพยายามรับที่อยู่เซลล์ของตำแหน่ง lat / long ทั้งหมดที่อยู่ภายในความต้องการ 0.01 องศาของแถวที่มีอยู่โดยใช้สูตรดังนี้:
=CELL("address",INDEX(AB:AB,MATCH(MIN(ABS(AB:AB-[@Lat])),ABS(AB:AB-[@Lat]),0)))
หรือสูตรที่ซับซ้อนมากขึ้น:
=ABS(RANK([@Lat],AB:AB)-MATCH(MIN(LARGE(AB:AB,ROW(INDIRECT("1:"&COUNT(AB:AB)-2)))-LARGE(AB:AB,ROW(INDIRECT("1:"&COUNT(AB:AB)-2))+2)),LARGE(AB:AB,ROW(INDIRECT("1:"&COUNT(AB:AB)-2)))-LARGE(AB:AB,ROW(INDIRECT("1:"&COUNT(AB:AB)-2))+2),0)-1)<=1
โดยที่ AB คือคอลัมน์ Lat
แต่พวกเขากลับ # N / A หรือ 0 บางทีฉันต้องใช้สคริปต์ VBA เพื่อทำซ้ำผ่านการเปรียบเทียบ lat / long อย่างไรก็ตามฉันไม่คุ้นเคยกับ Excel VBA ฉันได้คัดลอกข้อมูลส่วนน้อย (& lt; 2000 แถว) ไปยังชีตอื่นเพื่อให้ง่ายขึ้นในการทดสอบสูตรอาร์เรย์