Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1356to1360
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
Alle Spalten löschen ausser...
02.05.2014 18:09:27
Dip
Hallo Allerseits,
Folgende Problemstellung würde ich gerne in das Forum einbringen.
Und zwar würde ich gerne, dass in einer Tabelle alle Spalten ausser die Spalte "B", "E" "H-L" und "X" gelöscht werden.
Weiss jemand wie man dies in einem Marko umsetzt?
Bin für jede Hilfe sehr dankbar!
Beste Grüsse
Patrick

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Alle Spalten löschen ausser...
02.05.2014 18:16:39
Spenski
Hi
Versuch das mal mit dem makrorecorder aufzunehmen
Alle Spalten die du löschen willst markieren und dann Inhalte löschen
Gruss

AW: Alle Spalten löschen ausser...
02.05.2014 20:12:15
Uwe
Hallo Patrick,
habe mit meinen bescheidenen Mitteln mal folgenden Vorschlag. Sub Dip() Dim rng1 As Range, rng2 As Range, rng3 As Range, rng4 As Range, rng5 As Range With Sheets("Tabelle1") Set rng1 = .Range("A:A") Set rng2 = .Range("C:D") Set rng3 = .Range("F:G") Set rng4 = .Range("M:W") Set rng5 = .Range("Y:XFD") Application.ScreenUpdating = False rng5.Delete rng4.Delete rng3.Delete rng2.Delete rng1.Delete End With Application.ScreenUpdating = True End Sub
Nachteil: Das Löschen ist an keinerlei Bedingungen geknüpft. Es wird also bei jeder Ausführung des Makros gnadenlos gelöscht.
Vorteil: Das Makro tut 1:1 das was du beschrieben hast.
Grüße aus Dresden
Uwe

Anzeige
AW: Alle Spalten löschen ausser...
02.05.2014 23:11:26
Dip
Guten Abend Spenski und Uwe,
Danke für Euer Feedback!
@Spenski: Das habe ich bereits gemacht, nur möchte ich nicht die Spalten verwalten die zu löschen sind sondern nur die die nicht zu löschen sind, da die nicht zu löschenden Spalten sich verschieben können, und diese anzugeben leichter ist...
@Uwe: sieht gut aus :-) wie bereits beschrieben wäre es ideal, wenn ich die nicht zu löschenden Spalten angeben könnte, statt die zu löschenden...
Gäbe es eine Möglichkeit dies umzusetzen?
Beste Grüsse
Patrick

AW: Alle Spalten löschen ausser...
03.05.2014 01:14:51
Uwe
Hallo Patrick
hier noch ein Vorschlag, wie du das lösen könntest.
Sub Dip2()
Dim rngBereich1 As Range, rngbereich2 As Range
Application.ScreenUpdating = False
With Sheets("Tabelle1") 'Tabelle anpassen
Set rngBereich1 = Union(.Range("B:B"), .Range("B:B"), _
.Range("E:E"), .Range("H:L"), .Range("X:X"))
rngBereich1.Copy Destination:=ThisWorkbook.Sheets("Tabelle2").Range("A1") 'Tabelle  _
anpassen
.Range("A:XFD").ClearContents
End With
With Sheets("Tabelle2") 'Tabelle anpassen
Set rngbereich2 = .Range("A:H")
rngbereich2.Copy Destination:=ThisWorkbook.Sheets("Tabelle1").Range("A1") 'Tabelle  _
anpassen
.Range("A:XFD").ClearContents
End With
Application.ScreenUpdating = True
End Sub
Grüße aus Dresden
Uwe

Anzeige
AW: Alle Spalten löschen ausser...
03.05.2014 01:24:29
Uwe
sorry... .Range("B:B") ist doppelt. Kann einmal weg.

nicht markierte Spalten löschen ...
03.05.2014 08:54:46
Matthias
Hallo
Soll nur als Ansatz dienen!
ScreenUpdating habe ich bewusst nicht abgeschalten, damit Du siehst was passiert
Hier also mal ne kleine Datei zum Spielen
Im Bsp für die Spalten A-Z
 ABCDEFGHIJKLMNOPQRSTUVWXYZ
11234567891011121314151617181920212223242526
2 ü ü ü ü ü ü ü ü ü ü ü ü ü
3                          


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Das ü ist in der Datei ein Häkchen(Wingdings-Schriftart) zum Markieren
und wird von Excel Jeanie HTML 4 nicht dargestellt.
https://www.herber.de/bbs/user/90449.xlsm
Viel Spaß ;-)
Gruß Matthias

Anzeige
@Uwe Hinweis ...
03.05.2014 12:36:01
Matthias
Hi Uwe
... wäre es ideal, wenn ich die nicht zu löschenden Spalten angeben könnte, statt die zu löschenden...
Da solltest Du noch mal nachlegen ;-)


Aber das ist wichtig!
Wenn ich in Zelle("X1") z.B händisch den Inhalt lösche, dann wars das schon für den Code
Er will doch Spalten löschen, egal ob was drinsteht oder nicht
Das ist also nicht sicher, Uwe.
Hier ist übrigens Spalte B doppelt referenziert

Set rngBereich1 = Union(.Range("B:B"), .Range("B:B"), _
.Range("E:E"), .Range("H:L"), .Range("X:X"))
If .Cells(1, 24) = "" Then

Gruß Matthias

Anzeige
AW: @Uwe Hinweis ...
03.05.2014 14:38:15
Dip
Hallo Allerseits,
Ich habe in der Zwischenzeit mal versucht etwas zusammen zu bauen...
Dim introw As Long
With ActiveSheet
introw = .Range("A" & .Columns.Count).End(xlToRigt).Column
Do Until introw = 0
Select Case .Cells(introw, 1)
Case "D", "F", "G", "H", "E"
Case Else
.Columns(introw).EntireColumn.Delete
End Select
introw = introw - 1
Loop
End With
aber irgendwo hackt es noch...
wüsste jemand woran es liegt?
Danke und Grüsse
Patrick

xlToRigt ?
03.05.2014 15:23:09
Matthias
Hallo
Zitat

Ich habe in der Zwischenzeit mal versucht etwas zusammen zu bauen
Ist ja schön das Du auch versuchst eine Lösung zu finden,
aber wie wäre es denn mal mit einer Reaktion auf unsere Vorschläge ?
Das ist nicht besonders nett von Dir.
Gruß Matthias

Anzeige
AW: @Uwe Hinweis ...
03.05.2014 15:10:34
Uwe
Hi Matthias,
das mit der doppelten Referenzierung hatte ich schon bemerkt. Siehe einen Beitrag darunter.
Ansonsten ist hier das Problem, das wir den Hintergrund dieser Löschaktion nicht kennen und wie es dann nach dem Löschen weitergeht mit diesen Restspalten. Wenn es stört, kann die Prüfung von X1 ja rausgenommen werden. Wenn unser Dip das Ganze mal etwas näher erläutert oder eine BspMappe zeigt, würde am Ende vllt etwas völlig anderes rauskommen... aber das weiß eben nur unser Dip.
Grüße aus Dresden
Uwe

AW: @Uwe Hinweis ...
03.05.2014 15:43:51
Dip
Hallo Zusammen,
@Matthias: Entschuldige dass ich mich nicht explizit auf Dein Input reagiert habe. Auf jedenfall Danke für Dein Feedback! Das Bsp ist gut, jedoch nicht was ich für mein Problem brauche, und meine VBA Kenntnisse sind zu gering um das BSp irgendwie umzubauen damit es passt... Aber danke trotzdem Matthias!
@Uwe: Der Hintergrund ist, dass nicht alle Spalten (die Werte enthalten) benötigt werden und nur die erwähnte Spalten benötigt werden. Nachdem die überflüssen Spalten gelöscht sind, wir die Datei gespeichert, fertig. Eigentlich ganz einfach, in der Theorie :-) aber schwieriger zum umsetzen...
Grüsse
Patrick

Anzeige
@Patrick Nachtrag ...
03.05.2014 16:03:10
Matthias
Hallo
Da Du mich in Deiner Antwort an Uwe auch ansprichst, möchte ich noch ein letztes Feedback geben
Dann bin ich raus aus der Nummer.
Was ist daran schwierig in den Zellen der Zeile(2) einen Doppelklick zu machen?
Damit wird das Häkchen gesetzt für die Spalte, wenn Du sie nicht löschen willst.
Userbild
Übrigens löscht Dein Code auch bei richtiger Schreibweise von (Rechts) alle Spalten
Da kannst Du gleich schreiben:
Cells.Delete

Das geht dann auch schneller als Dein Konstrukt
Gruß Matthias

Anzeige
AW: @Uwe Hinweis ...
03.05.2014 16:49:49
Uwe
Hallo,
Zitat: "aber irgendwo hackt es noch... wüsste jemand woran es liegt?"
Da geb ich Matthias Recht. Es hakt wohl daran das du unsere Vorschläge ignorierst. Nachdem du nun sagtest, das nach dem löschen einfach nur gespeichert wird, weiß ich nicht warum du die Bsp'le nicht verwendest. Sowohl die Lösung von Matthias als auch meine führen zum Ziel, wenn auch auf unterschiedliche Weise. Das Ganze haben wir dir sogar in Bsp-Mappen präsentiert. Eine Steigerung wäre, du lässt ein Taxi nach Dresden kommen und wir passen dir das dann an deine Mappe an, natürlich Rückfahrt, Abendbrot und 'ne Kiste Bier inclusive.
Viel Spaß noch
Uwe

Anzeige
AW: @Uwe Hinweis ...
04.05.2014 23:59:30
Ewald
Hallo,
hier mal mit Eingabe der Spalten die du behalten willst in einer Inputbox
zB 1,3,5,7
diese Spalten bleiben erhalten, die anderen werden gelöscht.
Sub Spalten_löschen()
Dim x As String
Dim varr As Variant
Dim i As Long
Dim k As Long
Dim z As Long
x = Application.InputBox("Bitte die Spalten kommagetrennt eingeben die sie behalten wollen", " _
Spalteneingabe")
varr = Split(x, ",")
For i = ActiveSheet.UsedRange.Columns.Count To 1 Step -1
For k = 0 To UBound(varr)
If Columns(i).Column = CDbl(varr(k)) Then z = z + 1
Next
If z = 0 Then Columns(i).EntireColumn.Delete
z = 0
Next i
End Sub
Gruß Ewald

Anzeige
AW: @Uwe Hinweis ...
05.05.2014 14:40:54
Dip
Guten Tag Allerseits,
@Matthias: Deine Lösung ist super und einfach handzuhaben. Jedoch muss die Angabe der nicht zu löschenden Spalten im Code angegeben werden. Da meine VBA Kenntnisse gering sind, wüsste ich nicht wie ich die Spalten im Code selbst einzutragen habe. Dies habe ich mit meinem Beispiel versucht umzusetzen, leider ohne Erfolg. Ich danke Dir trotzdem für Deine Aufmerksamkeit und dein Beispiel kann ich bestimmt irgendwann gut gebrauchen!
@Uwe: Auch dir danke für Deine Unterstützung. Deine Lösung tut genau dies was zu tun wäre. Jedoch liegt das Problem beim Namen der Tabellen, die explizit angegeben werden. Da das Dokument wird an verschiedene Pesonen verteilt, die verschiedene Sprachversionen besitzen, kann dies zu Fehlern in der Ausführung führen.
@Ewald: Dies ist genau was ich gesucht habe! Ich habe die nicht zu löschenden Spalten direkt im Code als "x" variable definiert, was einfach war dank deines einfachen Codes. Vielen Dank für Deine Hilfe!
Einen sonnigen Tag für Alle!
Grüsse
Patrick

56 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige