Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1548to1552
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bestimmte Spalten finden und Löschen

Bestimmte Spalten finden und Löschen
07.04.2017 09:04:04
Jonas
Hallo,
gleich zu meiner Frage:
Ich habe eine Excel-Tabelle mit um die 40 Spalten mit verschiedenen Überschriften.
Und nun möchte ich bestimmte Spalten herauslöschen. Die Tabelle bekomme ich immer zugeschickt und sie enthält immer die aktuellen Daten. Problem ist das ich nicht einfach eine Makro aufnehmen/schreiben kann die immer Spalte T;K;H etc. löscht da sich die Reihenfolge ändern kann und wird. Nun ist die Frage wie ich Spalten finden kann anhand der Überschrift. Das entfernen krieg ich dann selbst hin.
Vielen Dank im Voraus
Gruß Jonas

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bestimmte Spalten finden und Löschen
07.04.2017 09:32:47
Markus
müsste so gehen
Sub löschen()
Dim var As Integer
var = Application.Worksheet

Function _
.Match("müller", Worksheets("test").Range("A1:A4000"), 0)
Sheets("Test").Range(Cells(1, var), Cells(100, var)).Clear
End Sub

AW: Bestimmte Spalten finden und Löschen
07.04.2017 09:38:57
Markus
sorry, so geht's
Sub löschen()
Dim var As Integer
var = Application.Worksheet

Function _
.Match("müller", Worksheets("test").Range("A1:zz1"), 0)
Sheets("Test").Range(Cells(1, var), Cells(100, var)).Clear
End Sub

Anzeige
AW: Bestimmte Spalten finden und Löschen
07.04.2017 10:03:40
Jonas
Hi Markus,
Das funktioniert leider nicht die Zeile mit .Match is ROT und wenn ich es ausführe bekomm ich die Meldung End Sub erwartet.
Gruß Jonas
AW: Bestimmte Spalten finden und Löschen
07.04.2017 10:14:00
Markus
versuchs mal so

Sub löschen()
Dim var As Integer
Dim lztest
With Sheets("Test")
var = Application.Worksheet

Function _
.Match("müller", .Range("A1:ZZ1"), 0)
lztest = .Cells(Rows.Count, var).End(xlUp).Row
.Range(Cells(1, var), Cells(lztest, var)).Clear
End With
End Sub

das Sheets (Test) und den Suchbegriff (Müller) musst du natürlich anpassen.
Anzeige
AW: Bestimmte Spalten finden und Löschen
07.04.2017 09:46:33
hary
Moin
Eine Moeglichkeit mit Match.
Dim mySpalte
Dim i As Long
Dim a As Variant
Dim wks As Worksheet
Set wks = Worksheets("Tabelle2") '--Blattname anpassen
'--statt Monat deine Spaltenueberschriftn die geloescht werden sollen
mySpalte = Array("Februar", "März", "April")
For i = 0 To UBound(mySpalte)
a = Application.Match(mySpalte(i), wks.Rows(1), 1) '--sucht in Zeile 1(Rows(1)) die 1 evtl.  _
anpassen
If IsNumeric(a) Then
wks.Columns(a).Delete
End If
Next

gruss hary
AW:korrektur
07.04.2017 10:09:03
hary
Moin nochmal
Bei Match muss statt der 1 eine 0 rein.
Application.Match(mySpalte(i), wks.Rows(1), 0)

gruss hary
Anzeige
AW: AW:korrektur
07.04.2017 10:11:59
Jonas
Ok nach der Korrektur klappts dank dir :) Aber was ist da jetzt der Unterschied zur 1 ?
AW: AW:korrektur
07.04.2017 10:26:30
hary
Moin
Match ist der VBA pondon zur Formel Vergleich.
Auszug aus der Hilfe:
"Ist Vergleichstyp gleich 0, gibt VERGLEICH den ersten Wert zurück, der identisch mit Suchkriterium ist. Die Elemente der Suchmatrix dürfen in beliebiger Reihenfolge angeordnet sein."
"Ist Vergleichstyp gleich 1, gibt VERGLEICH den größten Wert zurück, der kleiner gleich Suchkriterium ist. Die Elemente der Suchmatrix müssen in aufsteigender Reihenfolge angeordnet sein"
Sollte in der Spaltenueberschrift ein Leerzeichen sein, muss im Code auch eins vorhanden sein.
gruss hary
Anzeige
AW: AW:korrektur
07.04.2017 10:32:17
Jonas
Moin
das mit dem Leerzeichen ist logisch das das genau gleich sein muss wusste nur nicht sicher ob er das auch so vergleicht.
Aso das heisst bei 1 gibt er den Wert aus der am nächsten dran liegt ? Sry das ich das Frage aber im Zusammenhang mit Worten fällt mir zu "größter Wert" nix anderes ein :D
Gruß Jonas
AW: AW:korrektur
07.04.2017 10:41:14
hary
Moin
Genau so.
Statt ein Leerzeichen in den Code mit reinzunehmen, kannst du auch Jokerzeichen nehmen. Das heisst egal wo, in der Spaltenueberschrift, es reicht der Text aus dem Array.
Application.Match("*" & mySpalte(i) & "*", wks.Rows(1), 0

gruss hary
Anzeige
AW: AW:korrektur
07.04.2017 11:42:35
Jonas
Servus nochmal,
also ich sag mal um was es eig geht:
ich möchte eine Tabelle mit Daten in Access importieren und in Access sind die Spalten die importiert werden und deren Reihenfolge vorgegeben. Deshalb müsste ich die Reihenfolge festlegen.
Gibt es da eine Möglichkeit?
Gruß Jonas
AW: AW:korrektur
07.04.2017 11:42:35
Jonas
Servus nochmal,
also ich sag mal um was es eig geht:
ich möchte eine Tabelle mit Daten in Access importieren und in Access sind die Spalten die importiert werden und deren Reihenfolge vorgegeben. Deshalb müsste ich die Reihenfolge festlegen.
Gibt es da eine Möglichkeit?
Gruß Jonas
Anzeige
AW: Bestimmte Spalten finden und Löschen
07.04.2017 10:10:00
Jonas
Moin Hary,
das klappt ganz gut aber nur für die ersten drei Arrays wenn ich noch ein hinzufüge löscht er die Spalte nicht. Dazu eine Frage:Stellt es ein Problem dar, wenn in der Überschrift ein Leerzeichen enthalten ist? Eigentlich ja nicht ist ja durch die "" ein String oder ?
Gruß Jonas
AW: Bestimmte Spalten finden und Löschen
07.04.2017 10:08:01
UweD
Hallo
hier eine Lösung mit Find
hat den Vorteil, wenn mehrere gleiche Spaltenbezeichnungen vorhanden sind.
Sub Löschen_Spalte()
    Dim Arr, Z, SP
    Arr = Array("AAA", "15", "19") ' die Suchbegriffe 
    For Each Z In Arr
        Set SP = Rows(1).Find(Z, LookIn:=xlValues) 'Spalte 
        If Not SP Is Nothing Then
            Do
                Columns(SP.Column).ClearContents 'Werte löschen 
                Set SP = Rows(1).FindNext(SP)
            Loop While Not SP Is Nothing
        End If
    Next
End Sub

LG UweD
Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige