Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Nummerierung





Frage

Hallo, kennt jemand ein Makro, mit dem es möglich ist automatisch zu nummerieren? Hintergrund ist, dass ich andere Spalten, die ich zuvor sortiert habe, auf diese Weise wieder in die urspüngliche Reihenfolge bringen möchte, indem ich dann nach der Nummerierung sortiere. Aber falls sich in der Nummerierung was verändert (z.B. eine neue Zeile wird eingefügt) möchte ich das ebne durch den Makro aktualisieren. Von Hand alles einzugeben ist ziemlich anstrengend, wie Ihr euch vorstellen könnt :-) Ich bin für jede Unterstützung dankbar.

Antwort 1 von coros

Hi Blackolive,

sorry, aber eventuell verstehe ich da was falsch, aber zum Aktualisieren Deiner Zahlenreihe benötigst Du doch kein Makro und auch ein Eingabe von Hand brauchst Du nicht. Trage in die erste Zeile eine 1, eine Zeile darunter eine 2, markiere beiden Zellen und ziehe die markierten Zellen, in dem Du in der rechten unteren Ecke auf die Zelle klickst, bei gedrückter linker Maustaste nach unten. Dir werden dann fortlaufende Nummern erzeugt. Das sollte genügen.

Wenn nicht, dann mach mal etwas genauere Angaben(Spaltenangabe, in der die Nummerierung erfolgen soll usw.).

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von Blackolive

Hallo Oliver,

deine Beschreibung tirfft ganz genau zu. Das ist dann sozusagen der Plan B :-)

Da ich für andere Spalten Makros aufgezeichnet und die Makros entsprechenen Buttons zugewiesen habe, wäre ein zusätzlicher Button mit Spaltennummerierung aktualisieren und anschließend sofort sortieren optimal. Auf diese Weise könnte ich mit einem Klick die ursprüngliche (alte) Reihenfolge wiederherstellen.

Vielen Dank für deine Antwort und den Tipp

Grüße
Blackolive

Antwort 3 von coros

Hi Blackolive,

sorry, aber schreibe ich so schwer verständlich oder warum beantwortest Du nicht die Frage, in welcher Spalte die Nummerierung erfolgen soll. Auch interessant wäre, in welchem Bereich (Spaltenangaben) die Daten stehen, die sortiert werden sollen. Da Du darauf nicht eingegangen bist, scheint das völlig egal zu sein. Daher hier nur ein Beispielmakro. Kopiere es in ein StandardModul und starte s über eine Befehlsschaltfläche.

Option Explicit

Sub Sortieren_und_nummerieren()
Dim Wiederholungen As Long, Nummer As Long
Range("A2:B" & Range("A65536").End(xlUp).Row).Sort Key1:=Range("B2")
For Wiederholungen = 2 To Range("A65536").End(xlUp).Row
Nummer = Nummer + 1
Cells(Wiederholungen, 2) = Nummer
Next
End Sub


Bei dem Makro sollten die Nummerierungen in Spalte B stehen und die anderen Daten in Spalte A. Beim starten des Makros wird der Bereich A2 bis B letzte beschriebenen Zelle sortiert und anschließend die Spalte B neu durchnummeriert.

Ich hoffe, Dir hilft das Makro. Wenn nicht, bitte ein paar mehr und genauere Angaben.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 4 von Blackolive

Hallo Oliver,

ich hoffe du hast meine Antwort nicht in den falschen Hals gekriegt. Ok hier eine konkrete Beschreibung was ich möchte:

Ausgangssituation:
Ich habe Makros für 2 Spalten aufgezeichnet, welche das sind spielt für mich erstmal keine Rolle, nehmen wir an Spalte E und F. Die Makros können die Spalten aufsteigend und absteigend soritieren.

Problem:
Nun möchte ich nachdem die Spalten sortiert wurden, die alte Reihenfolge dieser Spalten wieder herstellen.

Ansatz:
Ich füge in die Spalte A eine Nummerierung ein, bis in den anderen 2 Spalten (E,F) kein Eintrag mehr vorkommt. Die Nummerierung muss eingefügt werden bevor ich sortiert habe und um die ursprüngliche Reihenfolge wiederherzustellen soritere ich einfach nach Spalte A aufsteigend.

Probelm:
Wie mache ich es, wenn ich nun eine neu Zeile einfüge die Nummerierung in der Spalte A automatisch zu aktualisiert bzw. nochmals neu durch zu nummerieren?

Ich weiß das war jetzt ausführlich, aber ich habe mich bemüht mich deutlich auszudrücken.

Kannst du mir da weiterhelfen?

Grüße
Blackolive

Antwort 5 von coros

Hi Blackolive,

also irgendwie verstehe ich dass nicht. Wie bekommst Du eine alte Reihenfolge wieder hin, wenn Du Deine Daten durcheinander wirbelst, so dass die Reihenfolge in Spalte A durcheinander ist, dann in Spalte A von oben nach unten neu durchnummerieren willst und dann wieder nach Spalte A sortieren möchtest? Wenn neue Nummern von oben nach unten neu vergeben wurden, sind diese doch in einer Reihe von 1 bis x, so dass keine Sortierung stattfinden wird/ muss? Oder bin ich jetzt völlig daneben?

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 6 von Blackolive

Hallo,

Danke für die zügige Antwort.

Nein das stimmt schon, wenn ich nachdem ich sortiert habe (also Spalte E,F) und dann Spalte A nummeriere ist die Sortierung der alten Reihenfolge hin. D.h. bevor ich Spalte E u. F sortiere muss eine Spalte A mit bestehender Nummerierung (1...x) vorhanden sein. Wenn ich jetzt Spalte E u. F sortiere wird die Nummerierung in Spalte A durchgewirbelt. Wenn ich nun Spalte A aufsteigend sortiere habe ich wieder die alte Reihenfolge (1...x).

Problem:
Wenn ich eine Zeile lösche ist die Reihenfolge der Nummerierung in Spalte A hin. Deswegen wäre es toll, sobald eine neue Zeile eingefügt oder gelöscht wird, sollte die Spalte A neu durch nummeriert werden.

War das besser?

Grüße
Blackolive

Antwort 7 von coros

Hi Blackolive,

mal mein obiges Makro umgebaut auf den bereich A:E und dass die Nummerierung in Spalte A steht. Es wird jedes mal ausgelöst, wenn in dem aktiven Tabellenblatt einen Änderung vorgenommen wird. Aber nur dann, wenn eine Zeile oder ein Bereich gelöscht wird. Ansonsten macht es das gleiche wie in Antwort 3 beschrieben. Kopiere es in das VBA Projekt des Tabellenblattes, in dem Du Deine Nummerierung und die restlichen Daten hast.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Wiederholungen As Long, Nummer As Long
If Target.Cells.Count > 1 Then
Range("A2:E" & Range("A65536").End(xlUp).Row).Sort Key1:=Range("A2")
For Wiederholungen = 2 To Range("B65536").End(xlUp).Row
Nummer = Nummer + 1
Cells(Wiederholungen, 1) = Nummer
Next
End If
End Sub


Ich hoffe, dass es vom Ansatz her schon mal so ist, wie Du es Dir vorgestellt hast. Ansonsten bitte melden.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 8 von Blackolive

Super Danke.

Ich habe in der Zwischenzeit anderen Code zusammenkratzen können, könntest du dir das bitte anschauen, sorry, dass ich das dir nicht früher gezeigt habe, aber die Info ist brandfrisch:

Sub ZeileEinfuegenNummerierungAktualisieren()

´Hier wird die aktuelle Zeile makiert
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Copy

ActiveCell.Offset(-1, 0).Range("A1").Select
Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
ActiveCell.Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveCell.Select

´Werte in Spalte A nach unten ausfüllen soweit wie Einträge in Spalte B - kann angepasst werden
Dim lngLZ As Long
lngLZ = Range("B" & Rows.Count).End(xlUp).Row
With Range("A1:A" & lngLZ)
.FormulaR1C1 = "=Row()"
.Value = .Value
End With

End Sub


Hier wird die Spalte A neu nummeriert, wenn eine Zeile an eine beliebige Stelle eingfügt wird. Doch es wird der Inhalt von der Zelle in Spalte B in die neue Zeile hochkopiert.
Sagen wir eine Spalte A 1-5 und Spalte B mit beliebigem Inhalt von 1-5. Und jetzt klick Zelle A3 an und führ den Makro aus.

Wenn eine neue Zelle mit Nummerierung in Spalte A eingefügt aber ohne Inhalt in Spalte B eingefügt wird, wäre ich am Ziel angelangt

Antwort 9 von Blackolive

Hi,

vorhin hat dieser Code geklappt, den ich im vorherigen Beitrag reinkopiert hab geklappt. Dachte ich. Es wir keine neue Zeile eingefügt. Es sollte

1. neue Zeile an der markierten Stelle einfügen
2. die Spalte A neu durchnummerieren

Aber es klappt nicht.

Grüße
Abdus

Antwort 10 von Blackolive

Hi Oliver,

Ok, ich bin am Ziel. Habe endlich das was ich wollte. Falls du neugierig geworden bist kannst dir´s ja mal anschauen, viel spaß:

Private Sub CommandButton1_Click()
Dim Zeile As Long, Spalte As Integer
Dim InsertRows As Variant
Dim i As Long
Dim lngLZ As Long
Zeile = Selection.Row + 1
InsertRows = InputBox("Bitte Anzahl der einzufügenden Zeilen eingeben:")
For i = 1 To InsertRows Step 1
Selection.Offset(i, 0).EntireRow.Insert Shift:=xlDown
Selection.EntireRow.Copy Selection.Offset(i, 0).EntireRow
For Spalte = 1 To 256
If Not Cells(Zeile - 1 + i, Spalte).HasFormula Then Cells(Zeile - 1 + i, Spalte) = ""
Next Spalte
Next i

´Werte in Spalte A nach unten ausfüllen soweit wie Einträge in Spalte B - kann angepasst werden

lngLZ = Range("B" & Rows.Count).End(xlUp).Row
With Range("A1:A" & lngLZ)
.FormulaR1C1 = "=Row()"
.Value = .Value
End With

End Sub


Und dir möchte ich sehr danken zum einen für die Quellen und zum anden besser gesagt vor allem für deine Gedult.

Grüße
Abdus

Antwort 11 von coros

Hi Blackolive,

sorry, dass ich mich nicht mehr gemeldet habe, aber ich habe mittlerweile Feierabend gemacht und bin jetzt erst zu Hause eingetroffen. Aber wie ich sehe, hast Du Dir ja miterweile selber geholfen. Freut mich, wenn Du es hin bekommen hast. Danke Dir auch für die Rückmeldung.

MfG,
Oliver
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: