Clever-Excel-Forum

Normale Version: Laufende Nummer erstellen basierend auf größtem Wert
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
[attachment=8890]
Liebes Forum,

in einer Tabelle, die viele Personen nutzen, um Seminare einzutragen, sollen automatisch Seminarnummern erstellt werden. Weil in die Tabelle die Seminare nach Monaten eingetragen werden, kann es sein, dass in Zeile 25 ein Seminar vor Zeile 7 eingetragen wird, es kann sein, dass Zeilen eingefügt werden oder gelöscht, trotzdem soll eine fortlaufende Nummerierung entstehen. Außerdem kann es Leerzeilen geben, die natürlich keine Nummer erhalten sollen, aber das ist ja am einfachsten mit einer if-Text-Abfrage zulösen...

Hinzukommt, dass verschiedene Seminartypen auch noch verschiedene Nummern bekommen sollen, das Format ist so:

XX -17-YY

XX steht für die fortlaufende Nummer
17 für das aktuelle Jahr
YY für die Seminartypen 01 oder 02 oder 03...

Die Tabelle könnte so aus sehen, wie sie beispielhaft angehängt habe.

Liebe Grüße
Melange
Hallo,

Das Beispiel ist zu allgemein.
Warum soll die Seminarnummer in Zeile 15 erscheinen und nicht vorher schon in Zeile 7 oder 5 oder..... Wovon konkret hängt das ab

Außerdem ist eine saubere Lösung, meiner Meinung nach nicht ohne VBA Einsatz möglich. Die letzte genutzte Nummer sollte unveränderbar in einer Zelle und-oder auf einem anderen Blatt gespeichert werden.
Hi,

(12.01.2017, 14:07)Melange schrieb: [ -> ]Die Tabelle könnte so aus sehen, wie sie beispielhaft angehängt habe.

ich hatte zuerst so gedacht:

Sheet1
ABCD
1lfd.Nr.SeminarnummerSeminarnameSeminartyp
2
3
411-17-3Excel für Anfänger3
5
6
7
8
9
1022-17-1Alternativen zu Excel1
11
12
13
14
1533-17-2Clever Excel Forum - ist ein Segen2

verwendete Formeln
Zelle Formel Bereich N/A
A2=WENN(C2<>"";MAX($A1:A$2)+1;"")
A3:A15=WENN(C3<>"";MAX($A$2:A2)+1;"")
B2:B15=WENN(C2<>"";A2&"-17-" &D2;"")
Excel-Inn.de
Hajo-Excel.de
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 19.08 einschl. 64 Bit


Aber da ändert sich die lfd. Nr. und damit die Seminarnummer, wenn dazwischen Daten eingetragen werden.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

'Diesen Code kopieren, Rechtsklick Tabellenreiter, "Code anzeigen", dort einfügen. In Spalte B Kursart eintragen!
 
 If Target.Column = 2 Then
    Application.EnableEvents = False
    Cells(Target.Row, 1) = WorksheetFunction.Max([A:A]) + 1
    Target = "'" & Cells(Target.Row, 1) & "-" & Right(Year(Date), 2) & "-" & Target
    Application.EnableEvents = True
 End If
End Sub
Hallo Lupo,

die Nummern sind Texte und deshalb kann kein Max festgestellt werden.

Nur als ergänzenden Hinweis:

statt so
Code:
Right(Year(Date), 2)


kann man auch
Code:
Format(Date, "YY")
Die Kolleg_innen tragen die Seminare in die Zeilen wild durcheinander ein

1. Weil es Zwischenüberschriften für die Monate gibt.
2. Weil es schon immer so gemacht wurde.

D.h. die Nummer darf sich nicht verändern, wenn oberhalb oder unterhalb ein Seminar eingetragen wird oder eine Zeile hinzugefügt bzw. gelöscht wurde...

Ich habe auch mit Max rumgespielt, aber natürlich ändert sich auch dann die Seminarnummer, weil es ja eine Art Zirkelschluss wird...

VBA kenne ich mich gar nicht aus...

Gibt es vielleicht so eine Abfrage: wie lautet der höchtste Wert in Spalte A (genau jetzt) ... und addiere nun +1... (aber wenn es laufend aktualisiert wird, dann geht es immer weiter)...

Mmh, und ich merke gerade, dass es auch sehr blöd wäre, wenn ein kurzfristiges Löschen des Seminartitels (weil er sich geändert hat) zu einer neuen Nummernvergabe führt... vielleicht fällt mir gerade eine bessere Lösung ein, ich muss die Kolleg_innen einfach überzeugen, dass Sie die Liste nach den Nummern sortieren bevor sie was neues eingeben... ob das klappt... schade, ich hätte eine automatische Lösung toll gefunden...

Wenn Euch noch was einfällt gerne her damit, ansonsten danke
Melange
ach da kam ja noch was... ich könnte die Seminarnummer auch in zwei Schritten erstellen ... also erst wie lupo und dann die Nr. als Text ausgeben...probier ich mal aus
Hi,

(12.01.2017, 16:47)Melange schrieb: [ -> ]ich hätte eine automatische Lösung toll gefunden...

es könnte in der Tabelle einen Button geben "neues Seminar eintragen", dort steckt dann ein Makro dahinter, das die alten Einträge sortiert, die Daten des neuen Seminars abfrägt und als letzte Zeile in die Tabelle einträgt.
Fertig!

Damit werden Falsch- und Durcheinandereingaben sowie Lücken minimiert oder komplett vermieden.

Ist so was für euch denkbar?
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'Rechtsklick Tabellenreiter, Code anzeigen, einfügen, in Spalte B Kursart eintragen
 If Target.Column = 2 Then
   Application.EnableEvents = False: With Cells(Target.Row, 1)
     .Value = IIf(.Value, .Value, WorksheetFunction.Max([A:A]) + 1)
     Target = "'" & .Value & "-" & Format(Date, "YY") & "-" & Target
   End With: Application.EnableEvents = True
 End If
End Sub
1. Format eingefügt (Attila)
2. A:A weiter als Zahlen angenommen (widerstreitende Behauptungen; habe Datei nicht geöffnet, sondern halte mich an Jeanie)
3. Vergebene lfd. Nr. wird jetzt beibehalten. Kann auch vorbesetzt werden in A.
WOW, was Lupo gebastelt hat, funktioniert ziemlich toll... leider muss ich befürchten, dass das trotzdem für mich nichts in der Praxis ist, weil wir den Seminartyp manchmal nachträglich verändern (anderer Fördertopf) und dann spukt er natürlich eine neue Nummer aus... aber im Prinzip ist es die Lösung gewesen...
Seiten: 1 2