Thema Datum  Von Nutzer Rating
Antwort
11.03.2015 13:39:48 Dom
NotSolved
Blau Bedingtes Kopieren mit Splittung Zeile
11.03.2015 21:28:55 Gast65178
NotSolved
12.03.2015 10:00:56 Dom
NotSolved
12.03.2015 16:37:44 Gast81288
NotSolved
18.03.2015 10:22:22 Dom
Solved

Ansicht des Beitrags:
Von:
Gast65178
Datum:
11.03.2015 21:28:55
Views:
806
Rating: Antwort:
  Ja
Thema:
Bedingtes Kopieren mit Splittung Zeile

Wenn Spalte Y leer sein kann und du es dann nicht mit übernehmen willst, musst du halt deinen gewünschten Bereich neu referenzieren und dann erst kopieren... oder halt in diesem Fall gar nicht kopieren.

Option Explicit

Sub test()
  
  Dim wks As Excel.Worksheet
  Dim rng As Excel.Range
  Dim i As Long
  Dim k As Long
  
  With Worksheets("Tabelle1")
  
    For i = 1 To .Cells(.Rows.Count, "V").End(xlUp).Row
      
      k = 0
      Do
        'zu betrachtenden Bereich referenzieren
        ' * Unterbereich wird um k verschoben
        ' * Unterbereich umfasst im ersten Durchgang 3 Zellen, sonst 2
        Set rng = Union(.Range("V" & i), _
                        .Range("W" & i).Offset(, k).Resize(, IIf(k > 0, 2, 3)), _
                        .Range("AO" & i)).Cells
        
        'der Bereich
        Debug.Print rng.Address(False, False) & " - {i:" & i & ", k:" & k & "}"
        'Inhalt der erste Zelle im Bereich
        With AreaCellByIdx(rng, 1)
          Debug.Print Spc(2); .Address(False, False) & " = '" & .Text & "'"
        End With
        'Inhalt der zweiten Zelle im Bereich
        With AreaCellByIdx(rng, 2)
          Debug.Print Spc(2); .Address(False, False) & " = '" & .Text & "'"
        End With
        'usw...
        
        'im nächsten Durchgang wird den Unterbereich
        'um den neuen Wert k nach rechts verschoben
        k = k + 3 - Abs(k > 0)
        
      Loop While k < 17 'wenn k = 17 ist, dann enthält der
                        'Bereich die Zelle AO (theoretisch) doppelt
    Next
    
  End With
  
End Sub

Private Function AreaCellByIdx(Range As Excel.Range, ByVal Index As Long) As Excel.Range
  Dim i As Long
  For i = 1 To Range.Areas.Count
    With Range.Areas(i)
      If Index > .Cells.Count Then
        Index = Index - .Cells.Count
      Else
        Set AreaCellByIdx = .Cells(Index)
        Exit Function
      End If
    End With
  Next
  Err.Raise 9 'index out of range
End Function

 


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
11.03.2015 13:39:48 Dom
NotSolved
Blau Bedingtes Kopieren mit Splittung Zeile
11.03.2015 21:28:55 Gast65178
NotSolved
12.03.2015 10:00:56 Dom
NotSolved
12.03.2015 16:37:44 Gast81288
NotSolved
18.03.2015 10:22:22 Dom
Solved