Excel - Werte in Sheet suchen, auslesen und in anderem Sheet ausgeben

0987654321kevin

Grünschnabel
Hallo,

ich habe folgendes Problem:

Ich habe in einer Excel-Datei in einem Sheet "Data" untereinander Postleitzahlen gespeichert und jeweils rechts davon - in derselben Zeile - eine dazugehörige Region und die Niederlassung. Da in der Regel mehrere Postleitzahlen zu einer Region bzw. Niederlassung gehören habe ich die Postleitzahlen in Grenzen definiert. Das sieht also folgendermaßen aus:


PLZ von | PLZ bis | Region | Niederlassung


09000 | 12452 | Nord | Berlin
12453 | 14162 | Nord | Rostock
14163 | 18532 | Nord | Berlin
18533 | 18533 | Nord | Hamburg
18534 | 29543 | Mitte | Leipzig

Mit VBA habe ich bereits eine Suchfunktion programmiert, sodass man auf einem anderen Sheet "Calculator" eine Postleitzahl eingibt und als Ausgabe in diesem Sheet die zugehörige Region und Niederlassung ausgegeben wird.

Nun zu meinem eigentlichen Problem:

Ich möchte auf dem Sheet "Calculator" in ein Feld eine Region oder eine Niederlassung eingeben, einen Button drücken und dann sollen auf diesem Sheet alle zugehörigen Postleitzahlen ausgegeben werden. Nach möglichkeit sollen nicht nur die Postleitzahlen in den Intervallen angegeben werden sonder jede einzelne Postleitzahl untereinander. Dies ist jedoch nicht zwingend notwendig, sollte es zu komplex sein. Dann würde auch die Ausgabe einzelnen Intervalle genügen. Zusätzlich wäre es schön, wenn über den Postleitzahlen noch ein Satz stünde, wie z.B. "Postzleitzahlen der Region (Niederlassung) XY".

VIELEN DANK FÜR EURE HILFE IM VORAUS!
 
Ich würde sagen du machst auf das Calculator-sheet ein Feld wo du Niederlassung und eins wo du Region drüberschreibst. Danaben fügst du einen Button "Start" oder so ein.
Wenn der gedrückt wird, wird geschaut nach was gesucht wird(Niederlassung oder Region, je nachdem in welchem der beiden oben genannten Felder was drin steht).
Dann wird in der entsprechenden Spalte im "data"-sheet nach dem String gesucht. Bei jeder Zeile die er findet wird eine Zählvariable auf den Wert in Spalte 1("PLZ von") gesetzt und in einer Schleife bis zum Wert in Spalte 2 ("PLZ bis") hochgezählt wobei die Zahl jeweils in eine Zeile im Sheet geschrieben wird(für die aktuelle Zeile in der du dich grad im Sheet befindest brauchst du ebenfals eine Variable)

Hoffe ich habe deine Beschreibung des Problems richtig verstanden!
So wär zumindest mein Lösungsansatz...

Grüße
NeMeSiS
 
Vielen Dank für Deine rasche Antwort!

Ich habe gestern versucht Deinen Ratschlag umzusetzen, jedoch funktioniert es bei mir nicht wie gewollt :mad: Wäre es möglich, dass Du mir einen Ansatz schreiben könntest. Das Feintuning sollte dann selbst für mich nicht das große Problem sein.

Vielen Dank nochmals!!
 
Hi,

hab da schnell mal was zusammengeschrieben. Bin mir nicht sicher ob es genau so gemeint war... Aber du kannst es auf jeden Fall auf deine Wünsche zuschneiden.
Was du damit vor hast ist mir allerdings ein Rätsel :)

Grüße
NeMeSiS
 

Anhänge

  • Book1.zip
    10,5 KB · Aufrufe: 541
Hi,

erstmal tausend Dank für deine Mühe, das hätte ich so nie hinbekommen.

Es gibt jedoch ein kleines Problem:

Es erscheint die Fehlermeldung "Run-time error '6' Overflow" und es wird die folgende Zeile in Visual Basic markiert:

If CInt(.Cells(i, 1).Value) <= CInt(.Cells(i, 2).Value) Then

Ich könnte mir vorstellen, dass es damit zusammenhängt, dass die Datenmengen sehr umfangreich sind. Aber dennoch wird ein Ergebnis angezeigt, jedoch nur, wenn ich eine Region oder Niederlassung eingebe, die sehr weit oben steht. Bei all den anderen kommt nur die Fehlermeldung, ohne dass ein Ergebnis angezeigt wird. Weiterhin zeigt er mir nur die Postleitzahlen an, bei denen die Region bzw. Niederlassung direkt untereinander steht. D.h. bei dem folgenden Bsp.:


1000 17999 Nord Berlin
18000 25999 Nord Hamburg
49434 49434 West Bielefeld
49439 49439 Nord Bremen
49448 49448 Nord Bremen

würde man alle PLZ für Region Nord suchen, so würde er nur die bis 25999 anzeigen und nicht die ab 49439.

Nun noch eine Frage:

Wo genau kann ich festlegen, an welcher Stelle die Ausgabe erzeugt wird, denn bei mir erscheint die Ausgabe in Zeile 39. Ich hätte die Ausgabe jedoch lieber ab Zeile 29. Und ist es möglich einen Button zu programmieren, der Felder löscht? Z.B. möchte ich die ausgegebenen Felder löschen lassen oder auf Knopfdruck einen fest definierten Bereich löschen.

Ich hänge am besten mal meine Datei an, sodass es etwas leichter ist die Probleme nachzuvollziehen.

Vielen Dank
 

Anhänge

  • PLZ.zip
    24,3 KB · Aufrufe: 111
Den Overflow gab es weil der Wertebereich von Integer überschritten wurde. In diesem Fall muss der Datentyp auf Long geändert werden (schon gemacht).
Dann zeigt er auch alle PLZen an.
Die Inhalte von Zellen können mit .ClearContents gelöscht werden. Siehe "Reset" - Knopf.

Den Startpunkt der Ausgabe wird nun durch die Konstante iStartLine festgelegt. (Deklaration ganz oben)

Grüße
NeMeSiS
 

Anhänge

  • PLZ.zip
    26,5 KB · Aufrufe: 246
Du bist mein Held:)

Vielen Dank für die schnelle und professionelle Hilfe. Du hast mir wirklich sehr weitergeholfen, da stehe ich tief in Deiner Schuld. Sollte ich Dir in irgendeiner Weise weiterhelfen können, dann lass es mich wissen.

Liebe Grüsse

Kevin
 
Auf dem Button mit dem Schwarz-weißen Gesicht kannst du eine Bewertung abgeben. Außerdem solltest du das Thema als "Erledigt" markieren.
Danke!

Grüße
NeMeSiS
 
Gut, dass ich es noch nicht als erledigt markiert habe:)

Ist es möglich die PLZ in einem neuen Tab ausgeben zu lassen, sodass es nicht auf der gleichen Seiten ausgegeben wird, sondern ein neues Tab erstellt wird, dass optimalerweise auch gleich den Namen der Eingabe trägt. Z.B. Tabname "West", wenn man alle PLZen der Region West anzeigen lassen möchte?

Vielen Dank nochmals!
 
Gut, dass ich es noch nicht als erledigt markiert habe:)

Ist es möglich die PLZ in einem neuen Tab ausgeben zu lassen, sodass es nicht auf der gleichen Seiten ausgegeben wird, sondern ein neues Tab erstellt wird, dass optimalerweise auch gleich den Namen der Eingabe trägt. Z.B. Tabname "West", wenn man alle PLZen der Region West anzeigen lassen möchte?

Vielen Dank nochmals!
 
Zurück