Registriert seit: 01.01.2023
Version(en): 365
Guten Tag allerseits Ich habe ein Excel problem wo ich trotz tiefgründiger Suche in den Foren nicht weiterkomme. Wir möchten Mitgliedernummern in einer Mitgliederliste generieren lassen. In Spalte B haben wir den Namen, dann Telefonnummer usw. In Spalte A möchten wir es gerne so haben, dass sich automatisch eine Nummer generiert wenn der Name in Spalte B eingetragen wird. Sprich, wenn wir ein neues Mitglied hinzufügen füllt sich die Mitgliedernummer automatisch aus. Soweit so gut. das bekomme ich mit der WENN Funktion hin. Jedoch ist jetzt die vorgabe das die Nummer wie folgt aufgebaut ist (Jahr zweistellig, Monat zweistellig, Nummerierung aufsteigend). Für heute also 2311001 (001 für das erste Mitglied). Die Nummerierung soll sich unabhängig vom vorherigen Datum weiterzählen. Kann mir da bitte jemand helfen wie ich das machen kann? Vielen Dank euch und einen schönen Tag. Cinderella
Registriert seit: 16.04.2014
Version(en): xl2016/365
Hola, ungetestet: =text(heute();"JJMM")&text(Zeile(A1);"000") Gruß, steve1da
Registriert seit: 06.12.2015
Version(en): 2016
Hallo, ein Ansatz mit VBA (im Code des Sheets) Code: Private Sub Worksheet_Change(ByVal Target As Range) Dim Pre As String, WSF As WorksheetFunction
Set WSF = Application.WorksheetFunction
Pre = Year(Date) & Month(Date)
If Target.Column = 2 Then Target.Offset(, -1) = IIf(WSF.Max(Columns("A:A")) > Pre & "000", WSF.Max(Columns("A:A")), Pre & "000") + 1 End If End Sub
mfg
Registriert seit: 01.01.2023
Version(en): 365
25.11.2023, 15:59
(Dieser Beitrag wurde zuletzt bearbeitet: 25.11.2023, 16:00 von Cinderella.)
Hallo Fennek
Danke für die schnelle Antwort und die Hilfsbereitschaft.
Das klappt ja wunderbar.
Jedoch zeigt es mir nun das Jahr als vierstellig an. wir hätten es gerne zweistellig, also anstatt "2023" nur "23". kann man das auch? genau so die monate. auch wenn ich da im januar was eintrage dann soll "01" stehen.
Danke für deine Antwort und einen schönen Nachmittag.
MFG
Hallo Steve1da
Der Ansatz klappt leider nicht. Danke aber trotzdem=)
MFG
Registriert seit: 06.12.2015
Version(en): 2016
25.11.2023, 16:17
(Dieser Beitrag wurde zuletzt bearbeitet: 25.11.2023, 16:18 von Fennek.)
ungeprüft: Code: Private Sub Worksheet_Change(ByVal Target As Range) Dim Pre As String, WSF As WorksheetFunction
Set WSF = Application.WorksheetFunction
Pre = format(Year(Date),"YY") & Month(Date)
If Target.Column = 2 Then if Target.offset (,-1) = "" then Target.Offset(, -1) = IIf(WSF.Max(Columns("A:A")) > Pre & "000", WSF.Max(Columns("A:A")), Pre & "000") + 1 End If end if End Sub
Registriert seit: 01.01.2023
Version(en): 365
Hallo Fennek Jetzt wird ein Fehler ausgespielt. Findest du den fehler gerade? Habe die zwei für mich unverständlichen Befehle verglichen. Der Unterschied mit dem Datum habe ich gefunden. Meiner Meinung nach müsste der Fehler im unteren Bereich sein. Kann das sein? Code: If Target.Column = 2 Then
if Target.offset (,-1) = "" then
Target.Offset(, -1) = IIf(WSF.Max(Columns("A:A")) > Pre & "000", WSF.Max(Columns("A:A")), Pre & "000") + 1
End If
MFG
Registriert seit: 25.11.2021
Version(en): 2019, 365
25.11.2023, 16:34
(Dieser Beitrag wurde zuletzt bearbeitet: 25.11.2023, 16:46 von Ralf A.)
Hi füge diesen Code in ein allg. Modul: Code: Function NeueID(t As Range) As String NeueID = Format(Date, "YYMM - ") & Format(t.Row,"0000") 'wenn mehr als 9999 Zeilen gebraucht werden, dann eine 0 mehr im Format angeben.... End Function
Und in die Zelle, in der die neue ID geschrieben werden soll, gibst Du ein (im Bsp. soll in B2 die ID geschrieben werden): = NeueID(B2) als Parameter kann auch A2 oder jede beliebige Spalte übergeben werden.... AAAABER!!! Empfehlenswert ist solch ein Vorgehen nicht. Zumindest dann nicht, wenn auf referentielle Integrität zu anderen Tabellen geachtet werden muss. Denn eine Nummer, die gelöscht wird, kann nochmal vergeben werden. Noch schlimmer, wenn eine Zeile gelöscht wird, dann ändern sich alle nachfolgenden ID's..... böööse Falle! Besser wäre, weder die Zeilennummer noch Max zu verwenden, sondern einen Zählerwert zu verwenden, der sich immer bei Neuanlage um mindestens 1 erhöht. Unabhängig vom Maxwert der Spalte oder der Zeilennummer... Pre = Year(Date) & Month(Date)
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben. Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
Ciao, Ralf
Registriert seit: 01.01.2023
Version(en): 365
Hallo Ralf
Danke für deine Antwort.
Das heisst, wenn wir das mit dem Code machen, dann werden die Mitgliedernummern, die eigentlich nur einmal vergeben werden sollen und dann eigentlich fest bleiben sollen, verändert?
Hast du denn eine bessere idee wie ich das so darstellen kann das ich das jahr und den monat im format habe und hinten die nummern aufkalkuliert werden?
MFG
Registriert seit: 25.11.2021
Version(en): 2019, 365
25.11.2023, 17:19
(Dieser Beitrag wurde zuletzt bearbeitet: 25.11.2023, 17:31 von Ralf A.)
...hatte ich doch schon gesagt.... es geht ja im Wesentlichen nur um den letzten Teil. Also den, der hochgezählt werden soll. Für den solltest Du Dir eine Zelle reservieren, deren Wert bei Neuanlage immer um 1 erhöht wird. Am Besten natürlich noch in einem separaten und ausgeblendetem Adminblatt. In der Zelle soll immer der neu zu vergebende Wert stehen. Aber sagen wir, dieser Wert soll im gleichen Blatt in Zelle H1 stehen. Dann kannst Du im Modul des Blattes folgenden Code schreiben: Code: Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count = 1 And Target.Column = 2 And Target <> "" Then Target.Offset(, -1) = Format(Date, "YYMM - ") & Format(Range("H1"), "000") Range("H1") = Range("H1") + 1 End If End Sub
...also, immer wenn sich was in Spalte B ändert, dann soll in Spalte A eine neue ID geschrieben werden. Der Code hat allerdings auch einen Haken. Denn wird ein bestehender Wert in B geändert (also nicht neu angelegt), dann wird ja trotzdem die ID generiert und geändert. Du solltest also noch eine entsprechende Sicherheitsabfrage einbauen oder prüfen, ob in Spalte A schon was steht und H1 sicherheitshalber auch vor unbefugtem Überschreiben schützen (Blattschutz).
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben. Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
Ciao, Ralf
Registriert seit: 01.01.2023
Version(en): 365
Oha... jetzt sind wir wieder an dem Punkt wo meine Excelkenntnisse überschritten werden.
Also ich kann das nicht auf einfache art und weise bauen? waren die ideen wieder grösser als meine kenntnisse=( schade.
Wie kann ich eine solche sicherheitsabfrage einbauen? Kann ich damit sagen, dass er eine bestehende nummer nicht überschreiben soll?
Sorry das blöde gefrage, komme mir selber doof vor
MFG
|