Thema Datum  Von Nutzer Rating
Antwort
09.09.2013 14:12:34 Florian
Solved
Blau Excel VBA neue Zeile nach bestimmten Wert (mehrfach vorhanden)
09.09.2013 20:39:32 Gast8269
NotSolved

Ansicht des Beitrags:
Von:
Gast8269
Datum:
09.09.2013 20:39:32
Views:
779
Rating: Antwort:
  Ja
Thema:
Excel VBA neue Zeile nach bestimmten Wert (mehrfach vorhanden)
Option Explicit

Public Sub MyLittleHelper()
  
  Dim wks       As Excel.Worksheet
  Dim rngTable  As Excel.Range
  Dim rngCell   As Excel.Range
  
  Set wks = ThisWorkbook.Worksheets("Tabelle1") ' Blatt auf dem sich die Tabelle befindet
  Set rngCell = wks.Range("A1")                 ' obere linke Ecke der Tabelle
  
  
  Set rngTable = rngCell.CurrentRegion
  
  ' Daten sortieren, zuerst nach erster Spalte, dann nach zweite Spalte
  ' (unter dem Gesichtpunkt, dass die Tabelle keine Kopfspalte hat)
  Call rngTable.Sort(Key1:=rngTable.Cells(1, 1), Order1:=xlAscending, _
                      Key2:=rngTable.Cells(1, 2), Order2:=xlAscending, _
                      SortMethod:=xlPinYin, _
                      Header:=xlNo)
  
  Dim rngCellPrev As Excel.Range
  Dim strNamePrev As String
  
  For Each rngCell In rngTable.Columns(1).Cells
    
    If strNamePrev <> "" Then
      If rngCell.Text <> strNamePrev Then
      '-> Name hat sich im Vgl. zum vorherigen geändert
        
        Set rngCellPrev = rngCell.Offset(-1)
        
        Call rngCell.Resize(ColumnSize:=rngTable.Columns.Count).Insert(xlShiftDown)
        
        With rngCell.Offset(-1).Resize(1, 2)
        ' schreibe den Name und das Jahr+1
          .Value = Array(strNamePrev, rngCellPrev.Offset(ColumnOffset:=1).Value + 1)
        End With
        
        strNamePrev = rngCell.Text
        
      End If
    Else
      strNamePrev = rngCell.Text
    End If
    
  Next
  '
  ' jetzt noch die letzte Zeile der Tabelle verarbeiten
  '
  Set rngCell = rngTable.Cells(rngTable.Rows.Count, 1).Offset(1)
  Set rngCellPrev = rngCell.Offset(-1)
  
  With rngCell.Offset(-1).Resize(1, 2)
  ' schreibe den Name und das Jahr(+1)
    .Value = Array(strNamePrev, rngCellPrev.Offset(ColumnOffset:=1).Value + 1)
  End With
  
End Sub

Hilft das weiter?

 

Gruß


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
09.09.2013 14:12:34 Florian
Solved
Blau Excel VBA neue Zeile nach bestimmten Wert (mehrfach vorhanden)
09.09.2013 20:39:32 Gast8269
NotSolved