Das sieht schon sehr wirr aus...
Die Zeilen identifizieren, welche einen Sprung von 0 auf 1 aufweisen:
Hier wird davon ausgegangen, dass die vorgegebene Tabelle bei A1 beginnt.
Option Explicit
Sub Test()
Dim rngHeader As Excel.Range
Dim rngDataRow As Excel.Range
Dim i As Long
Set rngHeader = Range("A1:O1")
'erste Zeile
Set rngDataRow = rngHeader.Offset(1)
'solange wiederholen, bis Wert in Spalte 'Name' leer ist
Do Until rngDataRow.Cells(2).Text = ""
'wir fangen in der Feb. Spalte an
For i = 5 To rngDataRow.Columns.Count
If rngDataRow.Cells(i - 1).Value = 0 _
And rngDataRow.Cells(i).Value = 1 Then
Call MsgBox( _
"Name: " & rngDataRow.Cells(2).Text & vbNewLine & _
"Sprung von 0 [" & rngHeader.Cells(i - 1).Text & "] auf 1 [" & rngHeader.Cells(i).Text & "] gefunden.", _
vbInformation)
Exit For
End If
Next
If i > rngDataRow.Columns.Count Then
'in dieser Zeile gab es keinen Sprung von 0 auf 1
Debug.Print "überspringe '" & rngDataRow.Cells(2).Text & "'"
Else
Debug.Print "Treffer: '" & rngDataRow.Cells(2).Text & "'"
End If
'nächste Zeile
Set rngDataRow = rngDataRow.Offset(1)
Loop
End Sub
An dem Ansatz kannst du auch erkennen, wie man einzelne Werte aus der Zeile abruft (hier den Wert aus der "Name"-Spalte).
Damit solltest du nun in der Lage sein, diese an deren Zielort zu übertragen.
Grüße
PS: Anstatt mit Indexwerten die Spalten anzugeben, könnte man das auch mithilfe einer kl. Helferfunktion bewerktstelligen, die die Spaltenbezeichner (rngHeader) auf den Index mapped (und umgekehrt).
|