Mit mehr als 78.000 Zeilen sollte die folgende VBA-Routine, die VBA-Arrays und ein Auflistungsobjekt verwendet, ziemlich schnell und schneller ausgeführt werden, als die "Arbeit" im Arbeitsblatt direkt auszuführen.
Option Explicit
Option Compare Text
Sub HelloStart()
Dim wsSrc As Worksheet, wsRes As Worksheet, rRes As Range
Dim vSrc As Variant, vRes As Variant
Dim COL As Collection
Dim MaxCols As Long
Dim V As Variant, W As Variant
Dim I As Long, J As Long
Set wsSrc = Worksheets("sheet1")
Set wsRes = Worksheets("sheet2")
Set rRes = wsRes.Cells(1, 1)
With wsSrc
vSrc = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
End With
Set COL = New Collection
For Each W In vSrc
Select Case W
Case Is = "Hello"
If Not IsEmpty(V) Then
COL.Add V
MaxCols = IIf(MaxCols > UBound(V), MaxCols, UBound(V))
End If
ReDim V(1 To 1)
V(1) = W
Case Else
ReDim Preserve V(1 To UBound(V) + 1)
V(UBound(V)) = W
End Select
Next W
If Not IsEmpty(V) Then COL.Add V
MaxCols = IIf(MaxCols > UBound(V), MaxCols, UBound(V))
ReDim vRes(1 To COL.Count, 1 To MaxCols)
I = 0
For Each V In COL
I = I + 1
J = 0
For Each W In V
J = J + 1
vRes(I, J) = W
Next W
Next V
Set rRes = rRes.Resize(UBound(vRes, 1), UBound(vRes, 2))
wsRes.Cells.Clear
With rRes
.Value = vRes
.EntireColumn.AutoFit
End With
End Sub
Danke Carpetsmoker für die Bearbeitung der Frage, Sie waren schneller als ich. :) – Bee