Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1464to1468
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

Wenn gesamte Spalte 0, löschen. Aber:Filter

Wenn gesamte Spalte 0, löschen. Aber:Filter
16.12.2015 13:21:49
Kerstin
Guten Tag,
Ich habe eine gefilterte Tabelle2, in der von Spalte A:D Formeln stehen. Oft kommt es vor, dass eine ganze Spalte den Wert "0" ausgibt.
Falls dies der Fall ist, wie kann ich diese Spalte über ein Makro automatisch ausblenden. Das Makro soll nur von den sichtbaren, gefilterte "0en" ausgehen.
VIelen Dank im Voraus
Kerstin

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn gesamte Spalte 0, löschen. Aber:Filter
16.12.2015 15:19:14
fcs
Hallo Kerstin,
nachfolgend entsprechende Makros, die du bzgl. der Spalten ggf. noch etwas anpassen muss.
Sub Ausblenden_wenn_Teilergebnis_gleich_Null()
Dim Spalte As Long, zeile_L
Dim wks As Worksheet
Dim dblSumme As Double
Set wks = ActiveSheet
With wks
Call Einblenden_Spalten(wks)
For Spalte = 1 To 20
Select Case Spalte
Case 1 To 4
zeile_L = .Cells(.Rows.Count, Spalte).End(xlUp).Row
dblSumme = Application.WorksheetFunction.Subtotal(9, .Range(.Cells(1, Spalte), .Cells( _
zeile_L, Spalte)))
dblSumme = VBA.Round(dblSumme, 4)
.Columns(Spalte).Hidden = dblSumme = 0
Case Else
'do nothing
End Select
Next
End With
End Sub
Sub Alle_Spalten_einblenden()
Call Einblenden_Spalten(ActiveSheet)
End Sub
Sub Einblenden_Spalten(wks As Worksheet)
wks.Columns.Hidden = False
End Sub
Gruß
Franz

Anzeige
AW: Wenn gesamte Spalte 0, löschen. Aber:Filter
16.12.2015 15:57:10
Kerstin
Hallo Franz
Ich weiß nicht genau wie ich das anpassen soll bzw. was
Habe gerade folgenden Code gefunden:
Sub spaltenloeschen()
Dim leer As Boolean
For spalte = 26 To 9 Step -1
leer = True
For zeile = 5 To 200
If Cells(zeile, spalte)  "0" Then leer = False
Next
If leer Then
Columns(spalte).Delete Shift:=xlToLeft
End If
Next
End Sub
Was muss ich eingeben, dass er bis zur letzten beschriebenen Zelle prüft und nicht bis 200, da dies variiert.
und was muss ich eingeben, dass es nur die sichtbaren prüft?
VG

AW: Wenn gesamte Spalte 0, löschen. Aber:Filter
16.12.2015 17:09:45
Kerstin
Hat keiner eine Lösung? :(
MFG

Anzeige
Tipp:RECHERCHE, letzte Zeile im Bereich...oT
16.12.2015 17:13:27
robert

AW: Wenn gesamte Spalte 0, löschen. Aber:Filter
17.12.2015 02:44:16
fcs
Hallo Kerstin,
ich bin in meinem Beisspiel von der evtl. falschen Annahme ausgegangen, dass die Formeln in den Spalten A bis D Zahlenwerte als Ergebnis ausgeben. Entweder 0 oder einen Wert &gt 0.
Mit der Funktion SubTotal oder deutsch TEILERGEBNIS kann man dann die Summe der Werte in den sichtbaren (per Filter nicht ausgeblendeten Zeilen) Zeilen einer Spalte berechen.
Die hab ich in meinem Makro angewendet.
Eine Methode zur Ermittling der letzten Zeile mit Inhalt ist in meiner Lösung auch enthalten. Sie funktioniert aber nur bei sichtbaren Zellen, des lasse ich vom Makro erst alle Spalten einblenden, um dann die Spalten mit TEILERGEBNIS = 0 wieder auszublenden.
Falls meine Annahmen falsch sind (1. Formelergebnisse sind Zahlen, 2. Zahlenwerte sind &gt0) dann muss man eine andere Lösung suchen.
Dein gefundenens Makro erweitert bezüglich sichtbare Zeilen und variable letzte Zeile könnte so aussehen:
Sub SpaltenAusblenden()
Dim leer As Boolean
Dim Spalte As Long, Zeile As Long, Zeile_L As Long
With ActiveSheet
'letzte Zeile mit Inhalt in Spalte A (1) - eine Spalte wählen, die nie _
ausgeblendet wird und in allen Zeilen einen Wert/Formel enthält!
Zeile_L = .Cells(.Rows.Count, 1).End(xlUp).Row
For Spalte = 26 To 9 Step -1 'Spalten Z (=29) bis I (=9) bearbeiten
leer = True
'alternative Methode (setzt voraus, dass ab Zeile 5 bis zum Ende der Liste alle _
Zellen in der Spalte Werte/Formeln enthalten)
Zeile_L = .Rows.Count
Zeile_L = 4 + Application.WorksheetFunction.CountA(.Range(.Cells(5, Spalte), _
.Cells(Zeile_L, Spalte)))
For Zeile = 5 To Zeile_L
'Prüfen, ob für Zelle Werte ungleich "0" abgezeigt werden.
With .Cells(Zeile, Spalte)
If .EntireRow.Hidden = False _
And .Text  "0" _
And Not .Text = "" Then
leer = False
Exit For
End If
End With
Next
If leer Then
.Columns(Spalte).Hidden = True 'Spalte nur ausblenden
'.Columns(Spalte).Delete Shift:=xlToLeft 'Spalte löschen
End If
Next
End With
End Sub

Gruß
Franz

Anzeige
AW: Wenn gesamte Spalte 0, löschen. Aber:Filter
21.12.2015 10:03:42
Kerstin
Guten Morgen,
ich habe so wenig VBA Kenntnisse, dass ich jetzt leider garnicht weiß wie ich vorgehen soll :(
danke trotzdem für Ihre Hilfe.

AW: Wenn gesamte Spalte 0, löschen. Aber:Filter
21.12.2015 12:06:48
Hajo_Zi
starte den VBA Editor (Alt+F11), Bild sollte zweigeteilt sein ansonsten Strg+R, gehe auf Deine Datei, rechte Maustaste, Einfügen Modul, Code ins rechte Fenster kopieren, VBA Editor schließen.
Register Ansicht, Befehlsgruppe Makros, auf Makro klicken, Makros anzeigen, Makro auswählen und ausführen.
starten über Ansicht, Makros, Makro

AW: Wenn gesamte Spalte 0, löschen. Aber:Filter
21.12.2015 13:43:07
Kerstin
Vielen Dank :) Es klappt!

Anzeige
AW: Wenn gesamte Spalte 0, löschen. Aber:Filter
21.12.2015 16:23:15
Hajo_Zi
Danke für Rückmeldung.
Gruß Hajo

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige