Vergleichen von zwei zellen
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
Antwort schreiben
Antwort 1 von Saarbauer vom 27.05.2022, 10:21 Options
Hallo,
so geht es nicht
Zitat:
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
Antwort 2 von angyal-jule vom 27.05.2022, 10:57 Options
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
Zitat:
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
Antwort 3 von M.O. vom 27.05.2022, 11:48 Options
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
Zitat:
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.
Antwort 4 von angyal-jule vom 27.05.2022, 12:13 Options
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.
Zitat:
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
Antwort 5 von M.O. vom 27.05.2022, 13:09 Options
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.
Antwort 6 von angyal-jule vom 27.05.2022, 13:58 Options
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? :(
Antwort 7 von nighty vom 27.05.2022, 14:20 Options
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
Antwort 8 von angyal-jule vom 27.05.2022, 15:43 Options
nicht wirklich ^^
Antwort 9 von angyal-jule vom 27.05.2022, 16:18 Options
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.
Antwort 10 von M.O. vom 28.05.2022, 09:06 Options
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.
Antwort 11 von angyal-jule vom 28.05.2022, 09:48 Options
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
Antwort 12 von angyal-jule vom 28.05.2022, 09:48 Options
http://www.file-upload.net/download-2552909/Dummy.xls.html
Sry ich hatte den Link vergessen
Antwort 13 von M.O. vom 28.05.2022, 10:26 Options
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.
Antwort 14 von angyal-jule vom 28.05.2022, 11:47 Options
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
Antwort 15 von M.O. vom 28.05.2022, 12:37 Options
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.
Antwort 16 von angyal-jule vom 28.05.2022, 13:11 Options
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 ;)
Antwort 17 von angyal-jule vom 28.05.2022, 14:42 Options
Noch eine kleine 100% super einfache Frage: wie ist der Befehl zum kopieren einer Zeile ?
Vielen Dank
Antwort 18 von Saarbauer vom 28.05.2022, 14:45 Options
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
Antwort 19 von angyal-jule vom 28.05.2022, 16:07 Options
Vielen Dank so funktioniert es =)
und das
Zitat:
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.
Antwort 20 von Saarbauer vom 28.05.2022, 18:42 Options
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