Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA für autom. Tabellenkürzung
#1
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.


Angehängte Dateien Thumbnail(s)
   
Antworten Top
#2
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
Antworten Top
#3
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.
Antworten Top
#4
Code:
For i = .UsedRange.columns.count To 1 Step -1
Antworten Top
#5
Oh ja. Genau dieser Befehl hat mir gefehlt.
Code:
Sub Test()
LetzteSpalte = ActiveSheet.UsedRange.Columns.Count
End Sub

So lauft das.

Besten Dank!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste