Clever-Excel-Forum

Normale Version: VBA für autom. Tabellenkürzung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich würde gerne eure Hilfe in Anspruch nehmen:

In dem beigefügten Screenshot habe ich einen Ausschnitt aus Excel. Es handelt sich hierbei um einen Auszug von Soll- und Ist-Fahrzeiten einer Buslinie, welcher mir aus Adobe als Excel-Sheet ausgeworfen wird. Oben ist die Hin- und unten die Rückfahrt dargestellt.
Problematisch ist, dass das von Adobe übersetzte Excel-Blatt hin und wieder leere Spalten auswirft, die ich gerne via VBA eliminieren würde. Bisher habe ich das stets händisch gemacht bzw. in der Zeile "Hs" jede nicht gewollte Spalte mit einem "x" versehen und dann automatisch entfernt.

Hat einer von euch einen praktischen Ansatz, wie ich per VBA bis zur letzten nichtleeren Zelle (hier: 172) komme? Üblicherweise ermittle ich die letzte Spalte via LastColumn = Range("A2").End(xlToRight).Column - 1

Für das obere Tabellblatt möchte ich beispielsweise eine Schleife generieren, welche von i=1 bis maximal i=172 geht und dabei jeden Bereich (Zeile 1, Spalte i) : (Zeile 47, Spalte i) entfernt, welche in der Zelle (Zeile 2, i) leer ist.

Besten Dank schon mal für eure Rückmeldungen.
Das könnte vielleicht helfen:

Code:
Sub SpaltenWeg()
    Dim i As Long
    With ActiveSheet
        For i = 142 To 1 Step -1
            If .Cells(2, i) <> "" Then _
              .Cells(1, i).Resize(42, 1).Delete Shift:=xlToLeft
        Next i
    End With
End Sub

Alles Gute, LG
Hi.

Dank für das Feedback. Den Ansatz bringe ich gerne in meinem Code mit ein. Unklar ist mir leider nach wie vor, wie ich das Maximum der Schleife bestimme, ohne selbst eine Zahl eingeben zu müssen.

Aus dem Screenshot sollte ersichtlich werden, dass ich nicht in der Lage bin, die Nummer der Spalte "FP" (=172) via VBA zu ermitteln. Ich kann in Zeile 2 die nichtleeren Zellen zählen (=140), jedoch aber nicht die leeren bis zur "endgültig befüllten Spalte in Zeile 2. Fest steht aber auch, dass mir die Ausgabe aus Adobe immer nur maximal eine freie Spalte ausgibt. Vielleicht wäre das auch ein Ansatz.
Code:
For i = .UsedRange.columns.count To 1 Step -1
Oh ja. Genau dieser Befehl hat mir gefehlt.
Code:
Sub Test()
LetzteSpalte = ActiveSheet.UsedRange.Columns.Count
End Sub

So lauft das.

Besten Dank!