Zellen ausblenden lassen wenn Werte eingetragen sind
#1
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 !!!
Antworten Top
#2
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).
Antworten Top
#3
Geht auch einfach mit PowerQuery (Tab "Daten" -> aus Tabelle Bereich).

Einlesen , rausfiltern und speichern.
Cadmus
Antworten Top
#4
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
Antworten Top


Gehe zu:


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