2017-01-19 4 views
0

ich mit Daten in folgendem Format für Hunderte von Blättern eine Excel-Arbeitsmappe:reorganisieren Spalt Daten in Excel VBA

December: 
Item D1 
January: 
Item J1 
Item J2 
Item J3 
February: 
Item F1 
March: 
Item M1 
Item M2 

Ich versuche, einen VBA-Code zu schreiben, durch jedes Blatt zu gehen und drucken der erste Artikel nach jedem Monat in einer einzigen Tabelle. Ich konnte den '.Find'-Befehl verwenden, um den Monat von Interesse zu finden, aber wie drucke ich den Inhalt der Zelle in der nächsten Zeile?

Um zu verdeutlichen, möchte ich den Code unten identifizieren "Dezember" und drucken "Element D1" in der aktiven Zelle, aber ich kenne nicht die VBA-Syntax, um die nächste Zelle zu verweisen. Irgendwelche Vorschläge?

Set month = Worksheets("Sales").Range("A:A").Find("December:", lookat:=xlPart) 
ActiveCell.Value = month+1 

Antwort

0

Nur ein Hinweis, nicht die volle Lösung (und verwendet Monat nicht so variabel, da seine eine VBA-Funktion):

Set rMonth = Columns("A:A").Find(What:="December:", LookAt:=xlPart) 
Set rNextCell = rMonth.Offset(1, 0) 

Worksheets("Sales").Cells(2, 3) = rMonth.Value 
Worksheets("Sales").Cells(3, 3) = rNextCell.Value 
0

Angenommen Sie haben das gleiche für alle Monate tun wollen, Folgendes sollte funktionieren:

Dim data As Variant, upper As Long 
Dim x As Variant, i As Long 
Dim results As New Collection 
data = Worksheets("Sheet1").Range("A:A").Value 
upper = UBound(data) 
For i = 1 To upper 
    x = data(i, 1) 
    If IsEmpty(x) Then Exit For 'otherwise we'll go until the last cell in the sheet 
    Select Case x 
     Case "December:", "January:", "February:", "March:" 'fill in the rest of the months here 
      results.Add x 
      results.Add data(i + 1, 1) 
    End Select 
Next 

'Transposing the array 
Dim finalArray() As Variant 
ReDim finalArray(results.Count, 0) 
For i = 1 To results.Count 
    finalArray(i - 1, 0) = results(i) 
Next 
Worksheets("Sheet2").Range("A1:A" & results.Count).Value = finalArray