Hab hier ein Makro gefunden das mir die Spalten nach Inhalt durchsucht und dann immer in nächste freie Spalte kopiert.
Aber irgendwie funktioniert das nicht wie es soll.
Es fehlen immer einige Inhalte außerdem wäre es nicht schlecht wenn es die Werte nicht in ein neues Tabellenblatt kopiert sondern
im Tabellenblatt bleibt also alles was gefunden wird nur in eine neue Spalte einfügt.
Vielleicht kann mir das jemand zurechtbiegen
Sub spalten()
Dim lngSpalten As Long
Dim arrInhalt As Variant
Dim lngZielspalte As Long
Dim lngZielzeile As Long
Dim wksQuelle As Worksheet
Dim wksZiel As Worksheet
Dim lngZaehler As Long
Dim bZahl As Boolean
'Quell- und Zieltabelle definieren - Namen anpassen
Set wksQuelle = ThisWorkbook.Worksheets("Tabelle1")
Set wksZiel = ThisWorkbook.Worksheets("Tabelle2")
'ggf. vorhandene Inhalte in Zieltabelle löschen
wksZiel.Cells.Clear
'Schleife für Spalten; Anzahl der Spalten wird in Zeile 1 festgestellt
For lngSpalten = 1 To wksQuelle.Cells(1, Columns.Count).End(xlToLeft).Column
'Marker wird auf falsch gesetzt
bZahl = False
'Spalte wird in Array eingelesen
With wksQuelle
arrInhalt = .Range(.Cells(1, lngSpalten), .Cells(.Cells(Rows.Count, 1).End(xlUp).Row, lngSpalten))
End With
'eingelesenes Array durchlaufen
For lngZaehler = LBound(arrInhalt) To UBound(arrInhalt)
'prüfen, ob Inhalt Zahl ist
If IsEmpty(arrInhalt(lngZaehler, 1)) = False Then
If bZahl = False Then
bZahl = True 'Marker auf wahr setzen
lngZielspalte = lngZielspalte + 1 'Variable für Zielspalte um 1 erhöhen
lngZielzeile = 0
End If
'Zahl in neues Blatt übertragen, falls Inhalt eine Zahl ist
If bZahl = True Then
lngZielzeile = lngZielzeile + 1
wksZiel.Cells(lngZielzeile, lngZielspalte) = arrInhalt(lngZaehler, 1)
End If
Else
bZahl = False 'ansonsten wird der Marker auf falsch gesetzt
End If
Next lngZaehler
Next lngSpalten
End Sub