Eine Such-, bzw Filterfunktion in Excel
Eine Zeichenfolge in Excel nach Konsistenz prüfen
Hallo liebe Admnistrator-Gemeinde,
folgender Sachverhalt:
in einer Excel-Spalte werden Zeichenfolgen folgenden Formats eingegeben:
2/312001
2/312002
2/312003
wobei die Zahl 2 vor dem Schrägstrich und der Schrägstrich selbst immer und unverändert bleiben.
Die Zahlenkombination nach dem Schrägstrich ist sechsstellig und sollte vortlaufend (konsistent) sein.
Nun kommt es in der Realität, dass eine oder mehrere sechstelligen Zahlen übersprungen, nicht eingetragen werden.
In der Spalte kommen am Ende einigen Tausende solcher Zeichenkommbinationen.
Gibt es eine Möglichkeit in Excel (VBA, Filters, Funktionen etc.) die fehlenden, nicht geschriebenen Zahlen anzuzeigen?
So liebe Gemeinde, bitte helft mir
P.S. einen guten Rutsch wünsche ich euch allen
Hallo liebe Admnistrator-Gemeinde,
folgender Sachverhalt:
in einer Excel-Spalte werden Zeichenfolgen folgenden Formats eingegeben:
2/312001
2/312002
2/312003
wobei die Zahl 2 vor dem Schrägstrich und der Schrägstrich selbst immer und unverändert bleiben.
Die Zahlenkombination nach dem Schrägstrich ist sechsstellig und sollte vortlaufend (konsistent) sein.
Nun kommt es in der Realität, dass eine oder mehrere sechstelligen Zahlen übersprungen, nicht eingetragen werden.
In der Spalte kommen am Ende einigen Tausende solcher Zeichenkommbinationen.
Gibt es eine Möglichkeit in Excel (VBA, Filters, Funktionen etc.) die fehlenden, nicht geschriebenen Zahlen anzuzeigen?
So liebe Gemeinde, bitte helft mir
P.S. einen guten Rutsch wünsche ich euch allen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 178216
Url: https://administrator.de/contentid/178216
Ausgedruckt am: 26.11.2024 um 01:11 Uhr
9 Kommentare
Neuester Kommentar
Hallo Cybercult!
Da Du nicht beschrieben hast, in welcher Form Du das Ergebnis benötigst, nur einmal ein schematischer Ansatz in VBA:
Es wird hier anhand der Angaben in den Zeilen 2 - 4 zunächst aus der ersten Datenzeile die Zahl nach "2/" ausgelesen und dann für alle weiteren Zeilen (bis eine leere Zelle in Spalte A gefunden wird) geprüft, ob die Zahl der nächsten Laufnummer (also etwa "312004") entspricht - falls nicht, wird eine Leerzeile eingefügt. Die Prüfung erfolgt konkret so, dass die ersten beiden Stellen übersprungen werden und nur der Rest des Zellinhaltes verglichen wird; es würde daher etwa "3/312004" ebenso wie zB "//312004" akzeptiert werden. Falls Du eine exakte Kontrolle des gesamten Zellinhaltes benötigst, müsstest Du zunächst klar stellen, was für den Fall, dass die konstanten ersten (beiden) Stellen nicht stimmen, passieren soll ...
Ach ja - vorausgesetzt wird auch, dass die Spalte A bereits sortiert wurde ...
Grüße
bastla
Da Du nicht beschrieben hast, in welcher Form Du das Ergebnis benötigst, nur einmal ein schematischer Ansatz in VBA:
Sub Check()
AbZeile = 2 'Werte ab dieser Zeile
Spalte = "A" 'Werte in dieser Spalte
Anfang = "2/" 'Konstanter Anfangsteil der Werte
Inhalt = Cells(AbZeile, Spalte).Value 'Inhalt der ersten Zelle auslesen
WertLfd = Mid(Inhalt, Len(Anfang) + 1) 'Zahlenwert der ersten Zeile ermitteln
Zeile = AbZeile + 1 'nach erster Zeile mit Prüfung beginnen
Inhalt = Cells(Zeile, Spalte).Value 'Zelleninhalt auslesen
Do While Inhalt <> "" 'wiederholen bis zur ersten leeren Zelle
WertLfd = WertLfd + 1 'Zahlenwert erhöhen
'Wenn Zellinhalt nicht nach dem Anfangsteil den richtigen Zahlenwert enthält, Leerzeile einfügen
If Mid(Inhalt, Len(Anfang) + 1) <> WertLfd Then Rows(Zeile).Insert
Zeile = Zeile + 1 'nächste Zeile
Inhalt = Cells(Zeile, Spalte).Value 'Zelleninhalt auslesen
Loop
End Sub
Ach ja - vorausgesetzt wird auch, dass die Spalte A bereits sortiert wurde ...
Grüße
bastla
Moin,
ich würde sowas quick 'n dirty lösen, Du mußt ja nur wissen, wo was fehlt ...
einfach über right() / left() den konstanten Teil eliminieren und die sechsstellige Zahl raussortieren (in einer neuen Spalte) und dann checken, ob in der darunter stehenden Zelle der Nachfolger steht - wenn ja, iss okay, ansonsten irgendwas in die Zeile reinschreiben ....
Gruß
24
ich würde sowas quick 'n dirty lösen, Du mußt ja nur wissen, wo was fehlt ...
einfach über right() / left() den konstanten Teil eliminieren und die sechsstellige Zahl raussortieren (in einer neuen Spalte) und dann checken, ob in der darunter stehenden Zelle der Nachfolger steht - wenn ja, iss okay, ansonsten irgendwas in die Zeile reinschreiben ....
Gruß
24
Moin Cybercult,
ich würde den Killefitz jetzt zwar eher quick & dirty mit zwei Matrixformeln lösen als gleich mit einem ausgewachsenen Makro...
Nichtsdestotrotz deckt natürlich auch bastlas Lösung die Anforderung ab.
Jedenfalls soweit ich bei wabernden Nebelschwaden überhaupt das Wort "Abdecken" missbrauchen würde.
Eine punktgenaue Lösung erfordert eben auch ein paar feste Punkte im Raum - siehe oben in bastlas Einleitung.
Gibt doch mal Zwischenfeedback, was du mit den Kommentaren anfangen konntest, was dir vielleicht noch Erwähnenswertes eingefallen ist inzwischen und was fehlt.
Grüße
Biber
ich würde den Killefitz jetzt zwar eher quick & dirty mit zwei Matrixformeln lösen als gleich mit einem ausgewachsenen Makro...
Nichtsdestotrotz deckt natürlich auch bastlas Lösung die Anforderung ab.
Jedenfalls soweit ich bei wabernden Nebelschwaden überhaupt das Wort "Abdecken" missbrauchen würde.
Eine punktgenaue Lösung erfordert eben auch ein paar feste Punkte im Raum - siehe oben in bastlas Einleitung.
Gibt doch mal Zwischenfeedback, was du mit den Kommentaren anfangen konntest, was dir vielleicht noch Erwähnenswertes eingefallen ist inzwischen und was fehlt.
Grüße
Biber
Moin Cybercult,
danke für deine nachgereichten Informationen
Interessant, wie total unterschiedlich deine Anforderung von bastla einerseits und mir andererseits aufgefasst wurde.
Ich war, auch aufgrund deines Satzes "Gibt es eine Möglichkeit in Excel .... die fehlenden, nicht geschriebenen Zahlen anzuzeigen?" davon ausgegangen, dass mindestens das Tabellenblatt mit vergebenen Nummern, wenn nicht sogar die ganze Original-Exceldatei "read-only" ist.
Schon allein weil Leerzeilen ( bzw. Zeilen bestehend nur aus diesen Auftrags-, Inventar-, Bestell-, Kamasutra- oder WTF-Nummern) ohne jegliche weitere Daten sicherlich niemals nicht problemlos von Folgeverarbeitungen hingenommen werden würden.
Mein Ansatz wäre also gewesen, in einem neuen Tabellenblatt (oder einer neuen Exceldatei) einen Abgleich des Soll-Nummernkreises mit dem vergebenen Ist-Nummernkreis zu machen.
Und nur alle nicht (oder noch nicht) vergebenen Nummern untereinander in einer Spalten aufzulisten.
Für dieses Zielwäre ich mit zweieinhalb Matrixformeln wohl auch hingekommen.
Wenn du aber -wie von bastla skizziert- in der Original-Liste die fehlenden Zeilen an den richtigen Positionen eingefügt haben möchtest
--> dann ist ein Makro sinnvoller.
Ich hatte eine andere Vorgehensweise angenommen und deshalb natürlich auch eine andere Lösung.
Grüße
Biber
danke für deine nachgereichten Informationen
Interessant, wie total unterschiedlich deine Anforderung von bastla einerseits und mir andererseits aufgefasst wurde.
Ich war, auch aufgrund deines Satzes "Gibt es eine Möglichkeit in Excel .... die fehlenden, nicht geschriebenen Zahlen anzuzeigen?" davon ausgegangen, dass mindestens das Tabellenblatt mit vergebenen Nummern, wenn nicht sogar die ganze Original-Exceldatei "read-only" ist.
Schon allein weil Leerzeilen ( bzw. Zeilen bestehend nur aus diesen Auftrags-, Inventar-, Bestell-, Kamasutra- oder WTF-Nummern) ohne jegliche weitere Daten sicherlich niemals nicht problemlos von Folgeverarbeitungen hingenommen werden würden.
Mein Ansatz wäre also gewesen, in einem neuen Tabellenblatt (oder einer neuen Exceldatei) einen Abgleich des Soll-Nummernkreises mit dem vergebenen Ist-Nummernkreis zu machen.
Und nur alle nicht (oder noch nicht) vergebenen Nummern untereinander in einer Spalten aufzulisten.
Für dieses Zielwäre ich mit zweieinhalb Matrixformeln wohl auch hingekommen.
Wenn du aber -wie von bastla skizziert- in der Original-Liste die fehlenden Zeilen an den richtigen Positionen eingefügt haben möchtest
--> dann ist ein Makro sinnvoller.
Ich hatte eine andere Vorgehensweise angenommen und deshalb natürlich auch eine andere Lösung.
Grüße
Biber
Hallo Cybercult!
Grüße
bastla
Wie oder wo kann man das am besten lernen?
Soferne Dich speziell VBA für Excel interessiert, könntest Du Dir zB VBA in Excel - Grundlagen anschauen, wobei in vielen Fällen noch nicht einmal VBA nötig sein sollte - siehe zB excelformeln.de ...Grüße
bastla