5.7k 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
Also ich habe jetzt mal einen Dummy gebildet. Ok einige Spalten sind nicht mehr richtig, aber das liegt daran, dass ich Seiten geloescht habe. Auf der ersten Seite seht ihr nun mein Problem!

Man hat von jeder Seite genau die 100 Zeilen angezeigt. Jetzt weiss ich nicht so recht weiter. Es geht darum, dass man am Ende nur noch die beschriebenen Zeilen hat und keine leeren dazwischen. Allerdings ist es jetzt mit MEINEM (die Button oben) so, dass ich das Ergebnis nicht markieren kann und dann kopieren. Momentan ist es jetzt so, da ich es nur ausgeblendet habe dass dann alles kopiert wird.

Ich hab mir noch etwas anderes ueberlegt:

Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 28/05/2010 par jkreisz
'

'
Range("C5:J5").Select
Application.CutCopyMode = False
Selection.AutoFilter
Selection.AutoFilter Field:=8, Criteria1:="0"
Rows("6:6369").Select
Selection.Delete Shift:=xlUp
Range("I16").Select
Selection.AutoFilter Field:=8
Range("B14").Select
Range("C5:J5").Select

Selection.AutoFilter
End Sub

Hier das Ergebnis kann ich nun kopieren, aber es ist jetzt fix. Hier braeuchte ich jetzt
1. ein Makro um das Makro rueckgaengig zu machen und
2. am besten auch hier wie auch oben die Moeglichkeit das eben nicht nur EINE sondern zwei Spalten ueberprueft werden. Es soll nicht nur "Titre" sondern auch "Avis" nach Inhalt geprueft werden. Nur wenn in beiden nichts/oder 0 steht, dann soll es veraendert werden (1. Verion ausblenden, 2. Version loeschen)

Ich bin auch fuer jeden anderen neuen Ansatz zu haben, allerdings faellt mir dazu einfach nichts mehr ein.

Vielen lieben Dank

Julia
0 Punkte
Beantwortet von
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo Julia,

folgendes Makro blendet auf dem Blatt Centrale Avis alle Zeilen aus, in denen die Spalte F oder H leer ist:

Sub CentralAvisNeu()

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) = "" Or 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


Wenn du nur die sichtbaren Zellen kopieren willst so geht das mit folgendem Makro:

Sub FiltereiKopieren()

Range("A5").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy _
Worksheets("Tabelle1").Range("A1")

End Sub


Hier werden die Daten in das Tabellenblatt Tabelle1 kopiert. Das kannst du deinen Bedürfnissen anpassen.

Schau mal, ob du jetzt weiterkommst.

Gruß

M.O.
0 Punkte
Beantwortet von
Hey,

super vielen Dank, das Makro zum kopieren funktioniet! Allerdings das andere wie gehabt immer noch nicht. Ich kann mir einfach nicht erklaeren woran es liegt :(

Ich vermute es bringt dich nicht zeiter zenn ich dir sage, dass das Excelprogramm hier auf Franzoesisch eingestellt ist. Ich wuesste allerdings nicht was das beeinflussen sollte.

Falls du noch eine Idee hast wuerde ich mich sehr darueber freuen.

Viele Gruesse
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo,

in der Dummy-Datei, die du ins Netz gestellt hast, funktioniert das in Antwort 13 gepostete Makro einwandfrei. In der Tabelle Centrale Avis werden alle Zeilen ausgeblendet,
in den in Spalte F oder H eine Null steht oder Zellen leer sind. Warum das Makro bei dir nicht funktioniert kann ich nicht sagen, aber an der französichen Version dürfte es nicht liegen.

Hier noch mal das Makro, angepasst an die Dummy-Datei (Prüfung erst ab Zeile 6):

Sub CentralAvisNeu()

Dim zeile As Integer

'Bildschirmaktualisierung ausschalten:
Application.ScreenUpdating = False


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

Next zeile

'Bildschirmaktualisierung einschalten:
Application.ScreenUpdating = True

End Sub


Um alles mögliche und unmögliche auszuschließen:
Du startest das neue Makro doch über Extras-Makro ? Ansonsten musst du dem Button das neue Makro zuweisen.

Gruß

M.O.
0 Punkte
Beantwortet von
Ich muss dich leider enttauschen, es funktioniert immer noch nicht. An sich fuehrt er das Makro ja aus, allerdings loescht er immernoch die Zeilen wo in der Spalte Titre nichts steht, auch wenn bei Avis etwas steht :(

Falls dir noch etwas einfaellt wuerde ich mich sehr freuen. Ich wuerde die Aufgabe zugerne perfekt loesen. Das Problem ist einfach, dass moeglicherzeise durch "dummes Handeln" (die Seiten 1-61 werden nicht von uns ausgefuellt) man entweder den Titel nicht weiss oder die Antwor t fuer Avis ausversehen falsch eintraegt, deshalb haette ich eifnach gern anstatt einer Spalte in der das geprueft wird die zweite dazu. Sieht da jemand sonst noch eine ander e Moeglichkeit ?

M.O. vielen Dank fuer deine kontinuierliche Hilfe ;)
0 Punkte
Beantwortet von
Noch eine kleine 100% super einfache Frage: wie ist der Befehl zum kopieren einer Zeile ?
Vielen Dank
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

ich habe mir mal die Beispieldatei angesehen und dort sind im Makro einige Fehler.

Mein Makro

Sub CentralAvis()
'
' Macro3 Macro
' Macro enregistrée le 26/05/2010 par jkreisz
'
Application.ScreenUpdating = False
Cells.EntireRow.Hidden = False
Sheets("Centrale Avis").Select
For i = 6 To Range("A65536").End(xlUp).Row
If (Cells(i, 7).Value = "" Or Cells(i, 7).Value = "0") And (Cells(i, 10).Value = "" Or Cells(i, 10).Value = "0") Then Rows(i).Hidden = True
Next i
Application.ScreenUpdating = True
End Sub

In deiner Beispieldatei getestet und funktioniert, wobei bei der Beispieldatei, in Spalte G (7) "Titre" steht und "Avis" in Spalte J (10).

Gruß

Helmut
0 Punkte
Beantwortet von
Vielen Dank so funktioniert es =)

und das
wobei bei der Beispieldatei, in Spalte G (7) "Titre" steht und "Avis" in Spalte J (10).
ist richtig. Die Datei wurde nach meinen ersten Eintraegen noch mehrfach geaendert und das zird leider auch noch so weitergehen.
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

freut mich, wenn sich die Spalten ändern dann ist diese Zeile zu ändern

If (Cells(i, 7).Value = "" Or Cells(i, 7).Value = "0") And (Cells(i, 10).Value = "" Or Cells(i, 10).Value = "0") Then Rows(i).Hidden = True

Habe die Zahlen fett gemacht, 7 steht für Spalte G und 10 für Spalte J

Gruß

Helmut
...