5.4k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo ihr lieben,

ich habe ein kleines Problem. Ich moechte gerne in einem Datensatz jeweils die Zeilen ausblenden in denen in Spalte F und H nichts oder eine Null steht. Ich bin ein totaler Anfaenger und bin bisher soweit gekommen; vermute aber, dass es sehr umstaendlich ist, ausserdem funktioniert es nicht richtig. Waere toll zenn ir jemand helfen koennte

Sub CentralAvis()

Dim Markierung As Range, Mark As Range, Wert As String, Zert As String, zelle, zellen
Cells.EntireRow.Hidden = False
Sheets("Centrale Avis").Select
ActiveSheet.Outline.ShowLevels RowLevels:=2
Set Markierung = Sheets("Centrale Avis").Range("F5:F6105")
Set Mark = Sheets("Centrale Avis").Range("H5:H6105")
For Each zelle In Markierung
For Each zellen In Mark
Wert = zelle.Value
Zert = zellen.Value
If Wert = Zert = "" Or Wert = "0" = Zert Then Rows(zelle.Row).Hidden = True
Next zellen
Next zelle
End Sub

Vielen Dank und liebe Gruesse Julia

22 Antworten

0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

so geht es nicht

If Wert = Zert = "" Or Wert = "0" = Zert Then Rows(zelle.Row).Hidden = True


If Wert = "" and Zert = "" Or Wert = "0" And Zert = "0" Then Rows(zelle.Row).Hidden = True

könnte passen so

If (Wert = "" and Zert = "") Or ( Wert = "0" And Zert = "0") Then Rows(zelle.Row).Hidden = True

hier müssen Wert und Zert entweder "" oder "0" sein,
als 2. Variante

If (Wert = "" Or Wert = "0") And (Zert = "" or Zert = "0") Then Rows(zelle.Row).Hidden = True

Hier muss Wert ="" oder "0" sein und gleichzeitig Zert ="" oder "0" sein

Ichkann es natürlich nicht testen, dazu müsste man die Tabelle nachbauen

Gruß

Helmut
0 Punkte
Beantwortet von
Vielen Dank fuer die schnelle Antwort allerdings dauert das mit 6000 Zeilen ziemlich lange. Ist es moeglich das irgendzie schneller hinzubekommen?
Ich kann auch gar nicht sagen ob es jetzt zirklich so ist, dass immer nur die die in einer Zeile stehen vergleichen werden? kann mir jemand dazu nochmal etwas sagen ?
Ich habe jetzt auch das zweite
If (Wert = "" Or Wert = "0") And (Zert = "" or Zert = "0") Then Rows(zelle.Row).Hidden = True

Hier muss Wert ="" oder "0" sein und gleichzeitig Zert ="" oder "0" sein

getestet allerdings schmeisst er jetzt auch die raus wenn in spalte h allein etwas steht in spalte f aber nicht.

Vielen Dank freue mich ueber zeitere Hilfe
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Julia,

eigentlich sollte das so funktionieren.

Hier mal ein etwas kürzeres Makro, das du mal testen kannst:

Sub CentralAvis()

Dim zeile As Integer

Bildschirmaktualisierung ausschalten:
Application.ScreenUpdating = False


For zeile = 1 To 6105
'Prüfung Spalten F und H
If (Sheets("Centrale Avis").Cells(zeile, 6).Value = 0 Or Sheets("Centrale Avis").Cells(zeile, 6) = "") And (Sheets("Centrale Avis").Cells(zeile, 8).Value = 0 Or Sheets("Centrale Avis").Cells(zeile, 8) = "") Then Sheets("Centrale Avis").Rows(zeile).Hidden = True

Next zeile

Bildschirmaktualisierung einschalten:
Application.ScreenUpdating = True

End Sub


Ich kann auch gar nicht sagen ob es jetzt zirklich so ist, dass immer nur die die in einer Zeile stehen vergleichen werden? kann mir jemand dazu nochmal etwas sagen ?


Man kann erst etwas dazu sagen, wenn man auch weiß, was verglichen werden soll.

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo,
vielen Dank es funktioniert jetzt schon viel schneller. Allerdings funktioniert es leider immer noch nicht, dass wenn nur in Spalte H etwas steht und nicht in Spalte F, es dann eingeblendet bleibt, es wird weiter ausgeblendet.

Man kann erst etwas dazu sagen, wenn man auch weiß, was verglichen werden soll.


Es soll einfach geschaut werden ob in den zwei Zellen der einen Zeile etwas steht. Wenn dann in BEIDEN !!!! nichts steht, dann soll es ausgeblendet werden.

Vielen Dank ^fuer die Hilfe bisher
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Julia,

wenn die Zeile nur ausgeblendet werden soll, wenn die Spalten F und H beide leer sind, dann ändere die If-Anweisung wie folgt:

If Sheets("Centrale Avis").Cells(zeile, 6) = "" And Sheets("Centrale Avis").Cells(zeile, 8) = "" Then Sheets("Centrale Avis").Rows(zeile).Hidden = True


Gruß

M.O.
0 Punkte
Beantwortet von
Vielen Dank,

allerdings liegt das Problem nicht darin dass noch zusaetzlich die Null dort drin stand sondern darin, dass sobald nur in einer der beiden Zellen etzas steht diese schon ausgeblendet wird !

Ich kann es allerdings nicht nachvollsiehen wieso,mir erscheint der Befehl mit der "and" verknuepfung eigentlich klar. Wieso funktioniert es nicht? :(
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

vielleicht hilfreich :-))

gruss nighty

Option Explicit
Sub Prüfen()
If IsEmpty(Cells(1, 1)) = True Then
'Ich bin leer und wurde auf String und Numeric geprueft
End If
End Sub
0 Punkte
Beantwortet von
nicht wirklich ^^
0 Punkte
Beantwortet von
Mhh wenn ich es so nicht richtig hinbekomme haette ich noch eine andere moeglichkeit es zu machen dafuer habe ihc nur gar keine Idee:

Beispiel:
Mein Excelsheet hat 4 Blaetter. Blaetter 2,3, und 4 sind sind identisch aufgebaut. Es ist eine Tabelle mit jeweils 100 Zeilen dort. Jetzt moechte ich das ganze auf dem ersten Blatt vereinen. Da man vermutet, dass pro Blatt nur 20 Zeilen ausgefuellt werden und man es so uebersichtlich wie moeglich halten moechte, werden auf Blatt 1 in die Tabelle fuer jedes Blatt nur 20 Zeilen eingefuegt. Jede Zelle der 20 Zeilen ist mit ihrem Equivalent auf den anderen Blaettern gekoppelt (zieht sich die Informationen von den Blaettern). Jetzt moechte ich aber, da in Zukunft vielleicht mehr als 20 Zeilen ausgefuellt werden, dass so bald ich auf Blatt 2,3,4 in Zeile 21 etwas schreibe auf Blatt 1 nach Zeile 20 eine weitere Zeile eingefuegt wird und diese auch mit ihrem Equivalent verknuepft wird. Sodass auch hier die selben Informationen wie auf dem eigentlichen Blatt auf dieser Seite stehen.

Nein ich kann das nicht alles gleich in das erste Blatt eintragen, da auf den einzelnen Blaettern noch weitere Informationen stehen. Oben das war meine Variante das irgendwie aehnlich hinzubekommen (das ganze ist eine Aufgabe meiner Chefin), ich habe alle 100 Zeilen eingefuegt und wollte die Zeilen ohne Information ausblenden lassen.
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Julia,

keine Ahnung, warum bei deiner Datei das Makro nicht funktionert.
Lade doch mal eine Beispieldatei mit ein paar Dummy-Daten hoch, z.B. hier und poste den Link.

Gruß

M.O.
...