Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1100to1104
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Nummerierung durchführen

Nummerierung durchführen
Lemmi
Guten morgen zusammen,
ich möchte eine Datenmengen von mehrern hundert Zeilen numerisch durchnummerieren.
Zurzeit mache ich das manuel!
Gibt es eine Möglichkeit (VBA -Code) in Splate A ab Zeile 5 eine Nummerierung 1 bis ... durchzuführen.
Randbedingung:
Es sollen nur die Zeilen die einen Inhalt aufweisen nummeriert werden.
Der Inhalt kann an beliebiger Steller in der Zeile sein. (Außer Spalte A)
Gruß
Lemmi

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Nummerierung durchführen
13.09.2009 09:28:42
{Boris}
Hi Lemmi,
numerisch durchnummerieren ;-))
Per Formel geht das so:
In A2:
=WENN(ANZAHL2(B2:IV2);MAX(A$1:A1)+1;"")
und runterkopieren (A1 muss leer sein bzw. darf keine Zahl enthalten).
Grüße Boris
AW: Nummerierung durchführen
13.09.2009 09:31:44
Tino
Hallo,
kannst Du gleich in dem Code von mir im Beitrag unten mit einbauen.
Option Explicit

Function FindLetzte(mySH As Worksheet) As Range
Dim LRow As Long, LCol As Long
Dim A As Long
 
 With mySH.UsedRange
   On Error Resume Next
        'Finde Zeile 
        LRow = .Find("*", , xlValues, xlWhole, xlByRows, xlPrevious, False, False).Row
        LRow = Application.Max(LRow, .Find("*", , xlFormulas, xlWhole, xlByRows, xlPrevious).Row)
        If LRow = 0 Then LRow = 1
   
        'Finde Spalte 
        For A = .Columns(.Columns.Count).Column To .Columns(1).Column Step -1
              LCol = mySH.Columns(A).Find("*", , xlValues, xlWhole, xlByRows, xlPrevious).Row
              LCol = Application.Max(LCol, mySH.Columns(A).Find("*", , xlFormulas, xlWhole, xlByRows, xlPrevious).Row)
              If LCol > 1 Then: LCol = A: Exit For
        Next A
        If LCol = 0 Then LCol = 1
 End With
 
 Set FindLetzte = mySH.Cells(LRow, LCol)
End Function

Sub LoescheLeere()
Dim Bereich As Range
Dim iCalc As Integer

With Application
  iCalc = .Calculation
 .ScreenUpdating = False
 .EnableEvents = False
 .Calculation = xlCalculationManual
    
    With Sheets("Tabelle1") 'Tabellenname anpassen 
        Set Bereich = FindLetzte(Sheets(.Name)) 'letzte Zelle finden 
      
      If Bereich.Row > 4 Then 'prüfen ob letzte erst ab Zeile 5 
        Set Bereich = .Range(.Cells(5, Bereich.Column), Bereich).Offset(0, 1)
        Bereich.FormulaR1C1 = "=IF(COUNTIF(RC1:RC[-1],"""")<COLUMN()-1,ROW(),TRUE)"
        .Range("A5", Bereich).Sort Key1:=Bereich(1, 1), Order1:=xlAscending, Header:=xlNo
        
        On Error Resume Next
        Bereich.SpecialCells(xlCellTypeFormulas, 4).EntireRow.Delete
        Bereich.FormulaR1C1 = "=ROW(R[-4]C1)"
        Bereich.Value = Bereich.Value
        On Error GoTo 0

      End If
    
    End With
 
 .Calculation = iCalc
 .ScreenUpdating = True
 .EnableEvents = True
End With

End Sub
Gruß Tino
Anzeige
AW: Nummerierung durchführen
13.09.2009 10:14:09
Lemmi
Guten morgen Tino,
Danke für Deine Hilfe!
Ich bräuchte noch eine kleine Anpassung !
......die Nummerierung schreib das Makro in Spalte C wie kann ich das in Spalte A bekommen,
und wie kann das Makro auf eine beleibige Tabelle (Tabellennahmen) angewendet werden!
Gruß
Lemmi
AW: Nummerierung durchführen
13.09.2009 10:31:52
Tino
Hallo,
müsste so gehen, Daten die sich aber in Spalte A befinden könnten gehen verloren.
Den Tabellennamen kannst Du im Code bei With Sheets("Tabelle1") anpassen.
Function FindLetzte(mySH As Worksheet) As Range
Dim LRow As Long, LCol As Long
Dim A As Long
 
 With mySH.UsedRange
   On Error Resume Next
        'Finde Zeile 
        LRow = .Find("*", , xlValues, xlWhole, xlByRows, xlPrevious, False, False).Row
        LRow = Application.Max(LRow, .Find("*", , xlFormulas, xlWhole, xlByRows, xlPrevious).Row)
        If LRow = 0 Then LRow = 1
   
        'Finde Spalte 
        For A = .Columns(.Columns.Count).Column To .Columns(1).Column Step -1
              LCol = mySH.Columns(A).Find("*", , xlValues, xlWhole, xlByRows, xlPrevious).Row
              LCol = Application.Max(LCol, mySH.Columns(A).Find("*", , xlFormulas, xlWhole, xlByRows, xlPrevious).Row)
              If LCol > 1 Then: LCol = A: Exit For
        Next A
        If LCol = 0 Then LCol = 1
 End With
 
 Set FindLetzte = mySH.Cells(LRow, LCol)
End Function

Sub LoescheLeere()
Dim Bereich As Range, tempBereich As Range
Dim iCalc As Integer

With Application
  iCalc = .Calculation
 .ScreenUpdating = False
 .EnableEvents = False
 .Calculation = xlCalculationManual
    
    With Sheets("Tabelle1") 'Tabellenname anpassen 
        Set Bereich = FindLetzte(Sheets(.Name)) 'letzte Zelle finden 
      
      If Bereich.Row > 4 Then 'prüfen ob letzte erst ab Zeile 5 
        Set Bereich = .Range(.Cells(5, Bereich.Column), Bereich).Offset(0, 1)
        Bereich.FormulaR1C1 = "=IF(COUNTIF(RC1:RC[-1],"""")<COLUMN()-1,ROW(),TRUE)"
        .Range("A5", Bereich).Sort Key1:=Bereich(1, 1), Order1:=xlAscending, Header:=xlNo
        
        On Error Resume Next
            Bereich.SpecialCells(xlCellTypeFormulas, 4).EntireRow.Delete
    
            Set tempBereich = Bereich.Offset(0, -(Bereich.Column - 1))
            tempBereich.FormulaR1C1 = "=ROW(R[-4]C1)"
            tempBereich.Value = tempBereich.Value
            Bereich.EntireColumn.Delete
        On Error GoTo 0

      End If
    
    End With
 
 .Calculation = iCalc
 .ScreenUpdating = True
 .EnableEvents = True
End With

End Sub
Gruß Tino
Anzeige
AW: Nummerierung durchführen
13.09.2009 14:12:23
Lemmi
Hallo Tino,
vielen Dank!
...hat alles geklappt!
Gruß
Lemmi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige