Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1360to1364
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

If Abfrage funtkioniert aber nicht If not... ???

If Abfrage funtkioniert aber nicht If not... ?
22.05.2014 09:53:56
Henry
Guten Morgen,
ich benutze diesen Code um gleiche Zeilen aus zwei Arbeitsblättern in bestimtmen Spalten zu finden und dann in ein drittes Blatt zu schreiben
Wenn Zeile 1 ( Blatt1 ) = Zeile 2 (Blatt 2) dann Liste auf Blatt dies und das und jenes.....
Funktioniert tadellos.
Aber nun wollte ich die Abfrage einfach umgekehrt laufen lassen und habe statt
If dann IF NOT abgefragt.
Allerdings funktionierts nun nicht...
Wie kann das liegen ?
Sub xcheck()
Application.ScreenUpdating = False
Dim ZeileQuelle As Integer
Dim ZeileReferenz As Integer
Dim ZeileZiel As Integer
Dim SheetReferenz As Worksheet
Dim SheetQuelle As Worksheet
Dim SheetZiel As Worksheet
' Variablen initialisieren
ZeileZiel = 18
Set SheetQuelle = Worksheets(1)
Set SheetReferenz = Worksheets(2)
Set SheetZiel = Worksheets(3)
' Alle Zeilen aus Referenz durchgehen
For ZeileReferenz = 1 To SheetReferenz.Range("A65535").End(xlUp).Row
' Aller Zeilen aus Quelle durchgehen
For ZeileQuelle = 1 To SheetQuelle.Range("A65535").End(xlUp).Row
' Nach Übereinstimmung suchen
If SheetQuelle.Cells(ZeileQuelle, 1) = SheetReferenz.Cells(ZeileReferenz, 5) Then
' Daten von Quelle nach Ziel kopieren
SheetZiel.Cells(ZeileZiel, 2) = SheetQuelle.Cells(ZeileQuelle, 1)
SheetZiel.Cells(ZeileZiel, 1) = SheetReferenz.Cells(ZeileReferenz, 1)
SheetZiel.Cells(ZeileZiel, 3) = SheetReferenz.Cells(ZeileReferenz, 3)
SheetZiel.Cells(ZeileZiel, 4) = SheetReferenz.Cells(ZeileReferenz, 7)
SheetZiel.Cells(ZeileZiel, 4) = SheetReferenz.Cells(ZeileReferenz, 4)
ZeileZiel = ZeileZiel + 1
Exit For
End If
Next
Next
End Sub

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: If Abfrage funtkioniert aber nicht If not... ?
22.05.2014 10:06:44
Arthur
Hallo Henry.
Hast du die Klammer bei NOT richtig gesetzt?
If NOT ( a=b ) Then
ist nicht
IF NOT a =b Then
Gruß, Arthur

AW: If Abfrage funtkioniert aber nicht If not... ?
22.05.2014 10:09:22
Daniel
Hi
Bei if not x = y berechnet Excel zuerst das Not x und vergleicht dieses Ergebnis mit y.
Wenn zuerst x=y berechnet werden soll, musst du Klammern setzen:
if not (x = y) then
Alternativ kannst du die Logik auch so aufbauen:
if x  y then
End If

if x = y then
Else
End if
Gruß Daniel

Anzeige
AW: If Abfrage funtkioniert aber nicht If not... ?
22.05.2014 10:24:45
Henry
Danke, hab ich soweit verstanden.
Bei der Abfrage mit if geht er Zeile für Zeile durch und prüft.
Bei der if not Abfrage oder auch bei der if Abfrage mit prüft er jedoch nur noch die erste Zeile.
Alle anderen bleiben ungeprüft und werden nicht auf dem Ergebnis auf Arbeistblatt 3 angezeigt.
Ich habe mal eine Beispiel Datei hochgeladen...
Auf Blatt 1 sind 18 Einträge in Spalte A.
Von denen sind 5 nicht auf Blatt 2 in Spalte E
https://www.herber.de/bbs/user/90784.xls
Diese 5 sollen auf Tabelle 3 angezeigt werden .
Die Positive Prüfung funktioniert und er geht auch alle zeilen durch.
Nur bei der Abfrage wenn nicht im Tabellenblatt 2 enthalten macht er es nicht richtig.

Anzeige
AW: If Abfrage funtkioniert aber nicht If not... ?
22.05.2014 10:29:30
Henry
leider noch offen...
Danke, hab ich soweit verstanden.
Bei der Abfrage mit if geht er Zeile für Zeile durch und prüft.
Bei der if not Abfrage oder auch bei der if Abfrage mit prüft er jedoch nur noch die erste Zeile.
Alle anderen bleiben ungeprüft und werden nicht auf dem Ergebnis auf Arbeistblatt 3 angezeigt.
Ich habe mal eine Beispiel Datei hochgeladen...
Auf Blatt 1 sind 18 Einträge in Spalte A.
Von denen sind 5 nicht auf Blatt 2 in Spalte E
https://www.herber.de/bbs/user/90784.xls
Diese 5 sollen auf Tabelle 3 angezeigt werden .
Die Positive Prüfung funktioniert und er geht auch alle zeilen durch.
Nur bei der Abfrage wenn nicht im Tabellenblatt 2 enthalten macht er es nicht richtig.

Anzeige
AW: If Abfrage funtkioniert aber nicht If not... ?
22.05.2014 10:40:20
Arthur
Hallo Henry.
Nutze anstelle xlUp 'worksheet.UsedRange.rows'. xlUp reagiert u.A. auf leere Zellen. UsedRange kann zwar mal mehr Zellen beinhalten (wenn gerade mal ein paar Zeilen gelöscht wurden), aber funktioniert ansonsten gut.
Gruß, Arthur

AW: If Abfrage funtkioniert aber nicht If not... ?
22.05.2014 10:51:35
Daniel
Hi
wenn die Daten in der einen Tabellen in Spalte A stehen und in der andren in Spalte E, dann musst du auch die letzte benutze Zeile in der richtigen Spalte ermitteln.
Du prüfst in beiden Tabellen in der Spalte A und das ist natürlich falsch:
For ZeileReferenz = 1 To SheetReferenz.Range("A65535").End(xlUp).Row
' Aller Zeilen aus Quelle durchgehen
For ZeileQuelle = 1 To SheetQuelle.Range("A65535").End(xlUp).Row
sollte wohl sein
For ZeileReferenz = 1 To SheetReferenz.Range("E65535").End(xlUp).Row
' Aller Zeilen aus Quelle durchgehen
For ZeileQuelle = 1 To SheetQuelle.Range("A65535").End(xlUp).Row
Gruß Daniel

Anzeige
AW: If Abfrage funtkioniert aber nicht If not... ?
22.05.2014 10:57:18
Henry
danke, da würd ich schon fast sagen "ich esel" klaro :)
Aber leider zeigt er mitr nun das erste Ergebnis nun 129 mal an.
Sind insgesamt 5 Ergebnisse und er zeigt das erste 129 mal ....aber die restlichen 4 gar nicht

AW: If Abfrage funtkioniert aber nicht If not... ?
22.05.2014 11:02:16
Arthur
... und da war noch das "Exit For".

AW: If Abfrage funtkioniert aber nicht If not... ?
22.05.2014 10:52:13
Henry
Hallo Arthur,
könntest du mir dabei helfen ?
Habs vermutlich nicht ganz verstanden...
eingesetzt habe ich nun
For ZeileReferenz = 1 To SheetReferenz.Range("A65535").End(Worksheet.UsedRange.Rows)
Aber der compiler meckert :=P

Quatsch...
22.05.2014 11:01:54
EtoPHG
Hallo Henry,
Du bestimmst in (deinem Beispiel in) der leeren Spalte A die letzte beschriebende Zelle und die ist damit 1. Also läuft dein For-Loop genau von 1 bis 1 ;-)
Würdest du stattdessen in der 'richtigen' Spalte suchen, müsste es passen:
For ZeileReferenz = 1 To SheetReferenz.Cells(SheetReferenz.Rows.Count, 5).End(xlUp).Row

Gruess Hansueli

Anzeige
AW: Mit UsedRange
22.05.2014 12:01:13
Daniel
Hi
wenn du mit der UsedRange zum Ermitteln der letzen Zeile arbeiten willst, dann so:
For ZeileReferenz = 1 To SheetReferenz.UsedRange.Rows.Count

funktioniert, wenn die Tabelle in Zeile 1 beginnt.
alternativ geht auch das:
For ZeileReferenz = 1 to SheetReferen.Cells.SpecialCells(xlcelltypelastcell).Row
zu beachten ist hierbei, das andere Spalten noch weiter befüllt sein können und dann in beiden Fällen die Schleife am Schluss über leere Zellen läuft.
Gruß Daniel

AW: If Abfrage funtkioniert aber nicht If not... ?
22.05.2014 11:00:18
Arthur
Hallo Henry.
So:
For ZeileReferenz = 1 To SheetReferenz.UsedRange.Rows.Count
Für Perfektionisten (falls in den ersten Zeilen nirgends nie nichts stünde):
For ZeileReferenz = 1 To SheetReferenz.UsedRange.Rows.Count - SheetReferenz.UsedRange.Row + 1
Gruß, Arthur

Anzeige
AW:für richtige Perfektionnisten dann wohl eher so
22.05.2014 12:04:35
Daniel
For ZeileRefernz = SheetReferenz.UsedRange.Row to SheetReferenz.UsedRange.Rows.Count - SheetRefrenz.UsedRange.Row + 1
schließlich soll die Schleife ja nicht nutzlos über die ersten leeren Zellen laufen.
Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige