Rufen Sie Excel-Zellenadressen mit den nächstgelegenen Werten in demselben Bereich ab

407
razzle_dazzle_84

Ich habe eine große Tabelle (> 15000 Zeilen), die Firmennamen, Standorte, Produktionsnummern und Längen- und Breitengrade der Standorte enthält. Beispieltabelle

Ich versuche, jeden Breiten- und Längengrad mit allen anderen Koordinaten zu vergleichen, um diejenigen zu finden, die innerhalb von 0,01 Grad liegen. Nennen wir diese Ortssammlungen als "Gebiete". Dann möchte ich für jeden dieser Bereiche die Gesamtzahl von Sold / Day und Flared / Day erhalten. Ich habe die Angelegenheit angegriffen, indem ich zunächst versucht habe, die Zelladressen aller Lat / Long-Standorte, die innerhalb der 0,01-Grad-Anforderung der vorhandenen Zeile liegen, anhand einer Formel wie folgt zu erhalten:

=CELL("address",INDEX(AB:AB,MATCH(MIN(ABS(AB:AB-[@Lat])),ABS(AB:AB-[@Lat]),0))) 

Oder eine viel komplexere Formel:

=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 

Wobei AB die Lat-Spalte ist.

Aber sie geben entweder # N / A oder 0 zurück. Vielleicht muss ich ein VBA-Skript verwenden, um die Lat / Long-Vergleiche zu durchlaufen. Ich bin jedoch mit Excel VBA nicht sehr vertraut. Ich habe einen kleineren Teil der Daten (<2000 Zeilen) auf ein anderes Blatt kopiert, um Arrayformeln einfacher zu testen.

0

1 Antwort auf die Frage

0
Thales

Sie können eine Pivot-Tabelle erstellen, indem Sie Ihre Daten auswählen und zu Einfügen -> Tabellen -> Pivot-Tabelle wechseln. Wenn Sie nur eine Ihrer Daten auswählen, wird Excel wahrscheinlich den Bereich aller Ihrer Daten richtig erraten.

Wenn Sie beispielsweise alle Ihre Unternehmen mit einer Anforderung von 0,01 Grad benötigen, ziehen Sie die Felder Long und Company in den Bereich Zeilen. Die Reihenfolge ist wichtig, es muss zuerst das Langfeld und dann das Firmenfeld sein. Dann müssen Sie nur noch den Längengrad nach der 0,01-Grad-Anforderung gruppieren.

Es gibt einige Möglichkeiten, dies zu tun. Sie können zu Daten -> Gliederung -> Gruppe oder zu PivotTable - Werkzeuge -> Analysieren -> Gruppe -> Gruppenauswahl gehen. Sie können auch mit der rechten Maustaste auf ein einzelnes Element (der Langdaten) klicken und aus der Verknüpfung Gruppieren auswählen Speisekarte. In beiden Fällen wird das Gruppierungsfeld angezeigt, und Excel setzt automatisch die Werte für Starting At und Ending At entsprechend Ihren Werten. Alles, was Sie tun müssen, ist auf 0,01 gesetzt. Excel gruppiert automatisch alle Unternehmen nach ihren Längenwerten, gruppiert nach der 0,01-Anforderung.

Dies ist zwar einfach und elegant, bietet jedoch keine echte Lösung. Wenn ich eine Pivot-Tabelle mit Zeilen aus Lat, Long, Location und Company (in dieser Reihenfolge) erstelle, dann sortiere zuerst Lat nach 0,01 und dann Long nach 0,01, so dass ich Gruppierungen sehe, die nahe beieinander liegen. Aber wenn ich die Pivot-Tabelle nach Long, Lat, Location, Company sortiere und zuerst Long nach 0.01 und Lat nach 0.01 sortiere, bekomme ich andere Gruppen als zuvor. Aus geometrischer Sicht muss ich jedes lat / long über die Distanzgleichung miteinander vergleichen: ds = sqrt (dx ^ 2 + dy ^ 2). razzle_dazzle_84 vor 7 Jahren 0
ist es so etwas wie Polarkoordinaten, und Sie möchten den Radius jedes Punktes vergleichen? Wenn ja, können Sie keine Spalte sqrt (Lat ^ 2 + Long ^ 2) und eine Gruppe nach Radius hinzufügen? Das einzige Problem ist hier, dass Sie möglicherweise falsche Antworten finden, wenn sich die beiden Positionen auf beiden Seiten des Meridians befinden. Thales vor 7 Jahren 0
Ein Vergleich der Radien würde mir nicht sagen, ob sich ein Standort in der Nähe eines anderen befindet. Danke für deinen Beitrag. Wir haben seitdem einen anderen Weg gefunden, um eine Schätzung der benötigten Daten zu erhalten. razzle_dazzle_84 vor 7 Jahren 0