Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Fortlaufende und eindeutige Nummerierung

Forumthread: Fortlaufende und eindeutige Nummerierung

Fortlaufende und eindeutige Nummerierung
05.03.2019 14:55:07
Senad
Guten Tag liebe Community,
Ich zerbreche mir wirklich schon seit heute morgen den Kopf darüber und habe auf verschiedene Art und Weise bereits erfolgslos versucht mein bisher größtes Problem zu lösen. Eine fortlaufende und eindeutige/einzigartige Nummerierung von Lagerbeständen, jedoch nur wenn ein "Einlagerungsdatum" eingetragen ist zu implementieren.
Eine einfache Nummerierung kommt leider nicht in Frage, denn ich möchte auch zukünftig die Möglichkeit offen lassen ganze Zeilen zu löschen, demnach soll eine Nummer jeweils nur einmal vergeben werden können.
Dazu habe ich ein Tabellenblatt mit ID's vorgesehen.
Also zusammengefasst benötige ich ein VBA Makro, wobei zunächst abgefragt werden soll ob ein Einlagerungsdatum eingetragen wurde, falls dies der Fall ist soll eine ID erzeugt werden, welche dann in eine Spalte übertragen wird. Wird jedoch die Zeile gelöscht darf diese ID nicht erneut vergeben werden und es soll auch fortlaufend eine neue ID für eine neue Einlagerung vergeben werden können.
Ich dachte wenn die ID's auf einem 2. Tabellenblatt unabhängig voneinander erzeugt werden und fortlaufend kopiert werden, wäre das die geeignetste Lösung und dann quasi nicht gelöscht und einfach fortnummerierend eingefügt...
Echt Wahnsinn, ich verzweifel da schon den ganzen Tag dran und hoffe ihr habt eine Lösung dafür. Es scheitert an allem und ich habe auch noch keinen Code den ich euch präsentieren könnte, alles nur zusammengewürfelt und per Try&Error bisher vergeblich gewesen :(
Lieben Gruß und wirklich besten Dank im Voraus, wenn mir da jemand behilflich ist
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fortlaufende und eindeutige Nummerierung
05.03.2019 15:12:58
ChrisL
Hi
Irgendwo musst du die Laufnummer speichern. Im Beispiel Hilfsblatt!A1 (kann man ausblenden).
Sub t()
Worksheets("Hilfsblatt").Range("A1") = Worksheets("Hilfsblatt").Range("A1") + 1
ActiveCell = Worksheets("Hilfsblatt").Range("A1") 'anpassen
End Sub
cu
Chris
Anzeige
AW: Fortlaufende und eindeutige Nummerierung
05.03.2019 15:33:28
Senad
Hi Chris,
Ich habe das so eingefügt, an sich bin ich wirklich in A1, mein "Hilfsblatt" heißt einfach "ID", deshalb habe ich einfach ID hingeschrieben.
Würdest du mir denn noch sagen, wie ich das bewerkstellige, also die Laufnummer erstmal in eine leere Zeile darunter generieren und diese dann übertragen in ich sage mal
Sheet1.Cells(lZeile, 40)= CStr(Sheet3.Cells(unsere generierte Nummer).Text)
Mein Problem ist, ich muss irgendwie Variablen definieren und das ganze in ein Makro.. tut mir Leid ich bin echt noch Anfänger und weiss mit meinem Bescheidenen Wissen nicht so ganz weiter.
Geht sich halt nur darum, dass ich wenn ich dann auch diese eindeutige ID erzeugt habe, jeweils immer in eine neue leere Zeile, diese dann auch übertragen kriege zusätzlich.
Ich befürchte fast ich unterfordere euch Experten, aber mich stellt das vor eine Hiops-Aufgabe
Vielen lieben Dank schonmal, wie man ein Worksheet auswählt war mir nämlich bis dato auch noch etwas unklar... Ich bastel mir meistens was zusammen und denke nicht so großartig drüber nach, deshalb habe ich auch maximal Halbwissen, was ich anwenden kann
LG
Anzeige
AW: Fortlaufende und eindeutige Nummerierung
05.03.2019 15:37:48
ChrisL
Hi
Das Problem ist, dass wir nicht in deine Datei sehen, darum bleibt es beim Trial&Error
Worksheets("Hilfsblatt").Range("A1") = Worksheets("Hilfsblatt").Range("A1") + 1
Sheet1.Cells(lZeile, 40) = Worksheets("Hilfsblatt").Range("A1")
oder
Worksheets("Hilfsblatt").Range("A1") = Worksheets("Hilfsblatt").Range("A1") + 1
Sheet1.Cells(Rows.Count, 40).End(xlUp).Offset(1,0) = Worksheets("Hilfsblatt").Range("A1")
cu
Chris
Anzeige
AW: Fortlaufende und eindeutige Nummerierung
05.03.2019 15:55:17
Senad
Hi Chris,
Es klappt soweit! Bin total erstaunt! Merkwürdig ist nur, dass er mir in mein Übersichtsworkbook 2x die ID hinkopiert... einmal in die erste Spalte an einer fortlaufenden Position, was sich mir so garnicht erschließt, hier der implementierte Code biser:
If ComboBox41.Text "" Then
Worksheets("ID").Range("A1") = Worksheets("ID").Range("A1") + 1
ActiveCell = Worksheets("ID").Range("A1")
Sheet1.Cells(lZeile, 40) = Worksheets("ID").Range("A1")
Unload UserForm1
UserForm1.Show
Else:
Unload UserForm1
UserForm1.Show
Er soll quasi erst abfragen, ob in ComboBox41 ein Wert drin ist (dass ist das mit dem Einlagerungsdatum) und wenn das der Fall ist generiert er die Zahl und kopiert Sie in die jeweilige Spalte und Zeile... ich versteh nur nicht, warum er die Zahl nochmal in die erste Spalte an einer Stelle kopiert? Verstehst du das?
LG
Anzeige
AW: Fortlaufende und eindeutige Nummerierung
05.03.2019 16:20:15
ChrisL
Hi
ActiveCell (=aktive Zelle) habe ich ursprünglich nur geschrieben, weil ich nicht wissen konnte wo du es hin willst.
cu
Chris
AW: Fortlaufende und eindeutige Nummerierung
05.03.2019 18:38:19
Senad
Hi Chris,
dass habe ich eben gemerkt und abgeändert... Mein vielen vielen vielen!!! Dank ging irgendwie nicht raus, deshalb an dieser Stelle nochmal.
Das war echt ne mega Hilfe für mich, ich hatte da wirklich nen Hänger und war total auf dem falschen Weg!
Danke vielmals und ich wünsche dir vorerst einen wunderschönen Abend!
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Fortlaufende und eindeutige Nummerierung in Excel


Schritt-für-Schritt-Anleitung

Um in Excel eine fortlaufende und eindeutige ID zu generieren, kannst Du ein VBA-Makro verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden Code in das Modul ein:

    Sub ID_Generieren()
       Dim lZeile As Long
       Dim wsID As Worksheet
    
       Set wsID = Worksheets("ID") ' Angenommene ID-Tabelle
       lZeile = wsID.Cells(Rows.Count, 1).End(xlUp).Row + 1 ' Nächste leere Zeile
    
       If ThisWorkbook.Sheets("Sheet1").Range("ComboBox41").Value <> "" Then
           wsID.Cells(lZeile, 1).Value = wsID.Cells(lZeile - 1, 1).Value + 1 ' Fortlaufende ID
           ' ID in Zielzelle kopieren
           ThisWorkbook.Sheets("Sheet1").Cells(lZeile, 40).Value = wsID.Cells(lZeile, 1).Value
       End If
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Weisen Sie das Makro einer Schaltfläche oder einem anderen Trigger zu, um die ID zu generieren, wenn ein Einlagerungsdatum eingegeben wird.


Häufige Fehler und Lösungen

  • Fehler: ID wird doppelt vergeben.

    • Lösung: Stelle sicher, dass die ID nur vergeben wird, wenn das Einlagerungsdatum in der entsprechenden Zelle vorhanden ist. Überprüfe die Logik im Wenn-Befehl.
  • Fehler: ID wird nicht fortlaufend.

    • Lösung: Überprüfe die Berechnung der nächsten leeren Zeile. Stelle sicher, dass Du immer auf die letzte nicht leere Zeile zugreifst.

Alternative Methoden

Eine weitere Möglichkeit, eine eindeutige ID zu erzeugen, ist die Verwendung von Excel-Formeln ohne VBA:

  • Verwende die Formel =WENN(A2<>"",MAX(B$1:B1)+1,"") in der Zelle B2, um automatisch eine fortlaufende ID zu generieren, wenn ein Wert in A2 eingegeben wird.

Praktische Beispiele

Angenommen, Du hast in der Spalte A die Einlagerungsdaten und möchtest in der Spalte B die eindeutigen IDs generieren. Du kannst die oben genannte Formel in B2 verwenden und nach unten ziehen. So erhältst Du automatisch generierte IDs für jede neue Einlagerung.


Tipps für Profis

  • Datenvalidierung: Verwende Datenvalidierung, um sicherzustellen, dass nur korrekte Einlagerungsdaten eingegeben werden, bevor die ID generiert wird.
  • Automatisierung: Du kannst das Makro so anpassen, dass es automatisch ausgeführt wird, wenn die Datei geöffnet wird, um sicherzustellen, dass immer die neuesten IDs generiert werden.
  • Sicherung: Erstelle regelmäßig Sicherungskopien Deiner Excel-Datei, um Datenverlust zu vermeiden, besonders wenn Du mit VBA arbeitest.

FAQ: Häufige Fragen

1. Wie kann ich die ID in einer anderen Spalte generieren? Du kannst die Zielzelle in der Zeile ThisWorkbook.Sheets("Sheet1").Cells(lZeile, 40).Value = wsID.Cells(lZeile, 1).Value ändern, um die ID in einer anderen Spalte zu platzieren.

2. Kann ich die ID auch ohne VBA generieren? Ja, Du kannst auch Excel-Formeln verwenden, um eine fortlaufende ID zu erzeugen, wie im Abschnitt "Alternative Methoden" beschrieben.

3. Was ist, wenn ich mehrere Einlagerungen gleichzeitig habe? Für mehrere Einlagerungen kannst Du das VBA-Makro so anpassen, dass es eine Schleife verwendet, um alle relevanten Zellen zu prüfen und IDs zu generieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige