Clever-Excel-Forum

Normale Version: Zellen ausblenden lassen wenn Werte eingetragen sind
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Moin Leute,

ich versuche seit gestern meine Tabelle zu verfeinern.... Leider bisher ohne erfolg.

Es geht um folgendes:

Ich habe eine Tabelle mit mehreren Zeilen (Adressen) und mehreren Summen die auf 3 Spalten aufgeteilt sind, diese werden tägliche aktualisiert.


A     4 - 2 - 3
B     0 - 5 - 3
C     0 - 0 - 0
D     3 - 1 - 0
E     0 - 0 - 0
F     1 - 2 - 1



Das ist ein Beispiel, jetzt möchte ich diese Tabelle, auf ein neues Blatt schon gecleant haben, d.H. alle Zeilen die keinen Wert bei den entsprechend Spalten haben (Entweder Spalte 4-5-6) sollen komplett ausgeblendet werden.
Aus dem Beispiel wären dann die Zeilen C und E ausgeblendet.

Wie bekomme ich das am besten hin? Habe leider keine Ahnung mit einem Makro :/

Vielen Dank !!!
Hi,


Zitat:Habe leider keine Ahnung mit einem Makro :/



Aus dem Grund lad mal eine Beispielmappe mit exakt Deiner Datenstruktur hoch. Dann erübrigen sich später umfangreiche Anpassungs(-nachfragen).
Geht auch einfach mit PowerQuery (Tab "Daten" -> aus Tabelle Bereich).

Einlesen , rausfiltern und speichern.
Hallo,

wenn Deine Werte in A2 bis D7 stehen, kommst Du mit diesem Code zu dem gewünschten Ergebnis: Zellen - ganze Zeile mit 0 - Werten werden ausgeblendet, Werte nach "Clean" übertragen.

Code:
Sub Uebertragen_und_Ausblenden()
'Neues benanntes Tabellenblatt einfügen
'einfügen als letztes Blatt

'Dimensionierung der Variablen
Dim Blatt As Object
Dim BlattName As String
Dim Bol As Boolean
Dim i As Long
Dim j As Long
Dim k As Long

'Blattname festlegen
BlattName = "Clean"

'Prüfen, ob das Blatt, welches eingefügt werden soll bereits vorhanden ist
'Nur einfügen, wenn Blatt noch nicht vorhanden ist
For Each Blatt In Sheets
  If Blatt.Name = BlattName Then Bol = True
Next Blatt
'Mitteilung, wenn das Blatt "Clean" bereits existiert
If Bol = True Then
MsgBox "Das Blatt mit dem Namen " & BlattName & " existiert bereits"
End If
'Blatt nur einfügen, wenn noch nicht vorhanden
If Bol = False Then
  With ThisWorkbook
    .Sheets.Add after:=Sheets(Worksheets.Count)
    .ActiveSheet.Name = "Clean"
  End With
End If

' Schleife durchlaufen mit Prüfung der Werte in den Spalten B bis D
With Tabelle1
i = 2
k = 2
For j = i To 7
'Wenn die Summe der Werte in Zeile 2 bis 7 größe 0 ist, dann Werte nach "Clean" übertragen
If Application.Sum(.Range(.Cells(j, 2), .Cells(j, 4))) > 0 Then
        With Worksheets("Clean")
        .Cells(k, 1) = Tabelle1.Cells(j, 1)
        .Cells(k, 2) = Tabelle1.Cells(j, 2)
        .Cells(k, 3) = Tabelle1.Cells(j, 3)
        .Cells(k, 4) = Tabelle1.Cells(j, 4)
k = k + 1
End With
i = i + 1
Else
'Falls Spalte B bis D = 0, dann Zeilen in der Ursprungsdatei ausblenden
With Tabelle1
.Rows(j).EntireRow.Hidden = True
End With
End If
Next j
End With
End Sub
Der Code gehört in ein Modul Deiner Arbeitsmappe.

Grüße

Norbert