Discussion:
Kontrolle von Koordinaten
(zu alt für eine Antwort)
Herbert Clemens
2003-07-01 08:03:00 UTC
Permalink
#
Hallo,

ich habe eine längere Koordinatenliste und möchte wissen, ob 2 Punkte näher
als 1m beieinander liegen. Das darf nicht sein und wird nur bei wenigen
Punkten vorkommen.
Die Berechnungsformel der Streckendifferenz lautet:
Wurzel aus ((Y1-Y2)²+(X1-X2)²), d.h.
Wurzel aus der Summe des Quadrates der Differenzen der Y bzw. X Werte
Verstanden??

Meine Tabelle sieht so aus und hat fast 2000 Zeilen:
NR Y X
1 2597697,310 5760229,778
2 2597696,484 5760230,692
3 2597724,113 5760250,394
4 2597725,299 5760250,327
5 2597751,914 5760271,886
6 2597751,756 5760273,944
7 2597776,672 5760242,748
8 2597776,464 5760241,286
9 2597725,299 5760250,327
10 2597799,013 5760214,421

:
:

Ich möchte nun wissen, gibt es einen Punkt der näher als 1m am untersuchten
Punkt liegt. Welche(r) das ist (sind), ist nicht so wichtig.

Gibt dafür eine Lösung in Excel?

Danke für eine Antwort

Herbert
Thomas Ramel
2003-07-01 08:30:24 UTC
Permalink
Grüezi Herbert
Post by Herbert Clemens
ich habe eine längere Koordinatenliste und möchte wissen, ob 2 Punkte näher
als 1m beieinander liegen. Das darf nicht sein und wird nur bei wenigen
Punkten vorkommen.
NR Y X
1 2597697,310 5760229,778
2 2597696,484 5760230,692
3 2597724,113 5760250,394
4 2597725,299 5760250,327
5 2597751,914 5760271,886
6 2597751,756 5760273,944
7 2597776,672 5760242,748
8 2597776,464 5760241,286
9 2597725,299 5760250,327
10 2597799,013 5760214,421
Ich möchte nun wissen, gibt es einen Punkt der näher als 1m am untersuchten
Punkt liegt. Welche(r) das ist (sind), ist nicht so wichtig.
Gibt dafür eine Lösung in Excel?
Angenommen die Daten beginnen in A1, dann in einer Hilfsspalte D die
folgende Formel und nach unten ausfüllen:

=WURZEL(($B$2-B2)^2+($C$2-C2)^2)

Für die erste Zeile ergibt sich hier '0', da der Punkt mit sich selbst
verglichen wird (eine Art Kontrolle also).

Dann in einer Zelle die folgende Formel:

=ZÄHLENWENN(D:D;"<1")-1
--
Mit freundlichen Grüssen

Thomas Ramel
- MVP für Microsoft-Excel -

[Win 2000Pro SP-4 / xl2000 SP-3]
Herbert Clemens
2003-07-01 09:18:41 UTC
Permalink
Hallo Thomas,

kleines Mißverständnis:
Ich wollte nicht nur den ersten Punkt mit dem Rest vergleichen, sondern alle
Punkte miteinander.
Dann muß ich mit Bereichen arbeiten, da fehlt mir noch die passende
Funktion.

Gruß Herbert
Thomas Ramel
2003-07-01 09:37:14 UTC
Permalink
Grüezi Herbert nochmals
Post by Herbert Clemens
Ich wollte nicht nur den ersten Punkt mit dem Rest vergleichen,
sondern alle Punkte miteinander.
...das hatte ich schon 'befürchtet'
Wieder in Hilfsspalte D; die Bezüge für die Zeilen noch anpassen:

=SUMMENPRODUKT((WURZEL((B2-$B$2:$B$11)^2+(C2-$C$2:$C$11)^2)<1)*1)-1

Und dann zur Berechnung z.B. in E1:

=SUMME(D:D)

Für die genannten Beispiele erhalte ich die Zahl 2, da jeder Punkt mit
jedem verglichen dann 2x näher als 1 m liegt.

Du könntest die Summe also noch durch 2 teilen?
--
Mit freundlichen Grüssen

Thomas Ramel
- MVP für Microsoft-Excel -

[Win 2000Pro SP-4 / xl2000 SP-3]
Thomas Ramel
2003-07-02 05:11:26 UTC
Permalink
Grüezi Herbert
auch wenn ich das SUMMENPRODUKT in Deiner Formel noch nicht ganz durchschaut
habe.
SUMMENPRODUKT() ist eine Matrix-Formel die beweirkt, dass die Berechnung
für alle im Bereich angegebenen zellen vorgenommen wird. Es wir deine
Resultate-Matrix erzeugt, die aus ebensovielen Elementen wie (in diesem
Falle) Zeilen im angegebenen Bereich besteht.

Es wird für jede Zeile der Wert in der Zeile (z.B. B2) mit jedem Wert in
der Spalte ($B$2:$B$11) errechent und die Wurzel aus der Berechnung
gezogen; sodann wird geprüft, ob der Wert kleiner 1 ist.
Dies ergibt eine WAHR/FALSCH-Matricx, die mit 1 multipliziert wird, wodurch
ein 1/0-Matrix entsteht, welche durch SUMMENPRODUKT() noch summiert wird.
Da jeder Punkt (auch) mit sich selbst verglichen wird ist das Resultat
immer mindestens eine 1, weil die Distanz einen Punktes zu sich selbst
logischerweise '0' ist - daher ziehen wir vom Gesamtresultat noch 1 ab.
Das Ergebnis ist genau das, was ich erzielen wollte.
Es freut mich, wenn es dir weiterhilft - mir hat es Spass gemacht, das
problem ohcn VBA anzugehen.
--
Mit freundlichen Grüssen

Thomas Ramel
- MVP für Microsoft-Excel -

[Win 2000Pro SP-4 / xl2000 SP-3]
Mike
2003-07-01 17:56:41 UTC
Permalink
Das wird wohl nur über ein Makro mit einer geschachtelten
do until ... loop-Schleife funktionieren, da bei der
Geschichte ja wohl jede Koordinate mit jeder anderen
verglichen werden muß. Die erste Schleife holt sich von
oben nach unten nacheinander die Koordinaten ab, die
zweite Schleife berechnet den Abstand zur jeweils nächsten
bis runter zur letzten. Sinnvoll wäre es, in einer leeren
Spalte neben der Koordinate aus der inneren Schleife die
laufende Nummer der Koordinate aus der äußeren Spalte
reinzuschreiben (siehe unten).

Gruß
Mike

Sub Abstand()
Zeile1 = 1
ZelleY1 = "B" & Zeile1
Do Until Range(ZelleY1) = ""
Zeile1 = Zeile1 + 1
ZelleY1 = "B" & Zeile1
Y1 = Range(ZelleY1)
ZelleX1 = "C" & Zeile1
X1 = Range(ZelleX1)
ZelleNr1 = "A" & Zeile1
Nr1 = Range(ZelleNr1)
Zeile2 = Zeile1 + 1
ZelleY2 = "B" & Zeile2
Do Until Range(ZelleY2) = ""
Zeile2 = Zeile2 + 1
ZelleY2 = "B" & Zeile2
Y2 = Range(ZelleY2)
ZelleX2 = "C" & Zeile2
X2 = Range(ZelleX2)
ZelleNr2 = "A" & Zeile2
Nr2 = Range(ZelleNr2)
Abst = Sqr((Y1 - Y2) * (Y1 - Y2) + (X1 - X2) *
(X1 - X2))
If Abst < 1 Then
ZelleBem = "D" & Zeile2
Range(ZelleBem) = Nr1 & ": " & Abst & "m"
End If
Loop
Loop
End Sub
-----Originalnachricht-----
#
Hallo,
ich habe eine längere Koordinatenliste und möchte wissen,
ob 2 Punkte näher
als 1m beieinander liegen. Das darf nicht sein und wird
nur bei wenigen
Punkten vorkommen.
Wurzel aus ((Y1-Y2)²+(X1-X2)²), d.h.
Wurzel aus der Summe des Quadrates der Differenzen der Y
bzw. X Werte
Verstanden??
NR Y X
1 2597697,310 5760229,778
2 2597696,484 5760230,692
3 2597724,113 5760250,394
4 2597725,299 5760250,327
5 2597751,914 5760271,886
6 2597751,756 5760273,944
7 2597776,672 5760242,748
8 2597776,464 5760241,286
9 2597725,299 5760250,327
10 2597799,013 5760214,421
Ich möchte nun wissen, gibt es einen Punkt der näher als
1m am untersuchten
Punkt liegt. Welche(r) das ist (sind), ist nicht so
wichtig.
Gibt dafür eine Lösung in Excel?
Danke für eine Antwort
Herbert
.
Loading...