Seite 1 von 1

Re: Ist das überhaupt möglich?

Verfasst: Fr, 14.11.2008 01:14
von balu
Hallo Bastie,

DerBasti83 hat geschrieben: so, als erstes mal ein dickes fettes SORRY für diesen langen Text!
das nennst Du lang!? :lol:
Na da hab ich aber schon längeres gesehen :wink:

Ich kann mir das nicht vorstellen, dass Du in Excel-Foren nicht fündig geworden bist. Aber nun gut, dann will ich mal versuchen dir einen Lösungsvorschlag zu unterbreiten. Er ist recht einfach gestrickt, und noch nicht so 100%ig sicher.

Am besten stell ich dir erst mal meine Formel vor, die ich in einer kleinen Beispieldatei angehängt habe.

Code: Alles auswählen

=WENN(VERGLEICH(B2;$A$5:$A$9;1)>VERGLEICH(B2;$B$5:$B$9;1);SVERWEIS(B2;$A$5:$C$9;3;1);SVERWEIS(B2;$B$5:$C$9;2;1))
In B2 steht jetzt mal eine X-Beliebige Plz drin. Diese wird einmal in der Von-Spalte (A-Bereich), und in der Bis-Spalte (B-Bereich) gesucht, und zwar nach folgendem Verfahren.
Mit VERGLEICH wird die Plz im Bereich von A5 bis A9 gesucht, und anschließend wird sie im zweiten Bereich von B5 bis B9 gesucht. Sollte die Zeilennummer im A-Bereich größer sein als die im B-Bereich, dann wird jetzt die erste SVERWEIS ausgeführt. Diese sucht jetzt noch mal im A-Bereich nach der Plz und wenn sie sie gefunden hat, dann gibt sie aus dem Bereich von A5 bis C9 den Namen zurück, der in der C-Spalte steht.
Sollte die erste VERGLEICH Überprüfung nicht größer sein, dann wird jetzt die zweite SVERWEIS ausgeführt. Nur wird jetzt nicht die Plz im A-Bereich, sondern im B-Bereich gesucht, und bei Treffer der Name aus der C-Spalte zurückgegeben.

Das ist eine ganz simple und billig zusammengestückelte Formel, die auch noch so ihre tücken hat. Denn wenn Du jetzt z.B. einen Plz-Bereich BIS 55789 hast, und der nächste fängt erst bei 57000 an, dann taucht auch schon das Problem auf. Denn wenn jetzt die Plz 56785 gesucht wird, wird durch diese Formel der nächst kleinere Wert verrechnet, und das wäre die 55789. Das dumme an der ganzen Sache ist, wenn Du keinen Partnerspediteur für die Plz 56785 hast, wird dir durch diese Formel trotzdem einer zugeteilt.
Ich denk mir mal das Du weißt was ich meine.

Aber warten wir mal ab, bis das unsere Spezialisten kommen. Denn die haben bestimmt was besseres im Petto :D.

Da ich jetzt meine Äuglein nicht mehr so recht aufhalten kann, geh ich nu in die Heia.


Gruß
balu

Re: Ist das überhaupt möglich?

Verfasst: Fr, 14.11.2008 17:38
von balu
Hallo Bastie,

ich hab da noch mal bischen getüftelt, und kan nun ein zufrieden stellendes Ergebnis präsentieren. Das hab ich wieder in den Anhang gepackt.

Und damit Du das ganze besser nachvollziehen kannst, erkläre erst mal die einzelnen Formeln, die hinterher zusammen in einer drin sind.
Diese Formel

Code: Alles auswählen

=INDEX(A5:A9;VERGLEICH($B$2;$A$5:$A$9;1))
steht in C15 drin (<- Von Plz).
Mit INDEX wird der Inhalt einer Zelle zurückgegeben, die durch einen Bereich (A5:A9) und durch die Zeilennummer (VERGLEICH...), defeniert ist. Wobei VERGLEICH das Suchkriterium $B$2 in dem Suchbereich $A$5:$A$9 sucht. Und wenn es gefunden wird, gibt VERGLEICH die Zeilennummer innerhalb des Suchbereichs zurück, das könnte z.B. die 3 sein. Die 1 in VERGLEICH sagt, dass der Suchbereich aufsteigend sortiert vorliegt. Das hat den Vorteil, dass die nächst kleinere Zahl zurückgegeben wird, wenn das Suchkriterium nicht exakt gefunden wird.
Die Formel könnte jetzt aufgrund des eben theoretisch ermittelten Wertes wie folgt aussehen.

Code: Alles auswählen

=INDEX(A5:A9;3)
Und die dementsprechende Postleitzahl könnte die 1498 sein.

Diese Formel

Code: Alles auswählen

=INDEX(A5:B9;VERGLEICH($B$2;$A$5:$A$9;1);2)
steht in C16 drin (<- Bis Plz).
Jetzt hat INDEX nicht mehr einen einspaltigen, sondern einen zweispaltigen Bereich (A5:B9). Und der Rest der Formel ist mit der vorherigen identisch, bis auf einen kleinen Unterschied. Jetzt steht da noch eine 2 drin. Und diese 2 gehört zu INDEX, und gibt die Spaltennummer des Bereichs (A5:B9) an. Wobei die 2 eine Feste Konstante ist, und nicht wie die 3, die ermittelt wird. Das hat zur folge, das die auch eben schon ermittelte Zeilennummer (3) jetzt auch wieder dabei rauskommt. Nur wird jetzt nicht der Wert aus der ersten, sondern aus der zweiten Spalte zurückgegeben. Mit anderen Worten, die Nachbarzelle zur rechten von vorhin.
Die Formel könnte jetzt wie folgt aussehen.

Code: Alles auswählen

=INDEX(A5:A9;3;2)
Passend zum Ergebnis von der ersten Formel könnte jetzt die Postleitzahl 22288 zurückgegeben werden.

Mit diesen beiden Formeln läßt sich jetzt die endgültige Formel aufbauen. Die jetzt wie folgt aussieht.

Code: Alles auswählen

=WENN(UND(B2>=INDEX(A5:A9;VERGLEICH($B$2;$A$5:$A$9;1));B2<=INDEX(A5:B9;VERGLEICH($B$2;$A$5:$A$9;1);2));SVERWEIS(INDEX(A5:A9;VERGLEICH($B$2;$A$5:$A$9;1));A5:C9;3;0);"Kein Partner")
Die beiden Formeln sind jetzt in der UND(...) eingesetzt. Damit wird überprüft, ob die zu suchende Plz größer (>), oder gleichgroß (=), dem Ergebnis der herausgefundenen VON Plz ist. UND ob sie kleiner (<), oder gleichgroß (=), dem Ergebnis der herausgefundenen BIS Plz ist. Es müssen beide zustände zutreffen, damit es mit der SVERWEIS(...) weitergeht.
In der SVERWEIS ist jetzt schon wieder die zu erst beschriebene Formel drin, und das ist jetzt das Suchkriterium. Und wenn es jetzt gefunden ist, wird nun aus dem Datenbereich A5:C9 der Wert aus der dritten (3) Spalte zurückgegeben. Es wird also jetzt der passende Name angezeigt.
Sollte aber die UND(...) überprüfung nicht zutreffen. dann wird der Text "Kein Partner" ausgegeben.


Die Hauptformel funktioniert soweit sehr gut :D

Nur gibt es da noch ein anderes Problem!
Wie handhabst Du die Postleitzahlen die mit einer Null (0) anfangen!? Und wie sieht das in dem anderen Programm (RegioGraph10) aus?


Ansonsten kann ich dir nur viel Spaß damit wünschen :D

Gruß
balu