Anzeige
Archiv - Navigation
1720to1724
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

Wenn(Vergleich-Funktion

Wenn(Vergleich-Funktion
13.11.2019 15:46:24
Georg
Hallo,
ich möchte gern diese Formel für die Spalte M:
=WENN(VERGLEICH(F2;L:L;0)="#NV";"!!!";"Ok")
in VBA übernehmen. Ich bekomme aber immer die Fehlermeldung, dass ein "Fehler beim Kompilieren" aufgetreten ist bei folgender (dicker) Formel:
For i = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
Cells(i, 13) = If(WorksheetFunction.Match(Cells(i,6),Range("L:L"),0)="#NV","!!!","Ok"))
Verrät mir bitte jemand, wo mein Fehler liegt? Danke!
VG Georg

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Cells(i,13).Formula="..."
13.11.2019 15:52:51
NoNet
Hallo Georg,
Du möchtest die Funktion =WENN(VERGLEICH(F2;L:L;0)="#NV";"!!!";"Ok") in die Zellen übernehmen ?
Dazu musst Du die Anweisung Cells(i,13).Formula="..." verwenden :
Cells(i,13).Formula=="=IF(MATCH(F2,L:L,0)=""#NV"",""!!!"",""Ok"")"
Salut, NoNet

Hast Du Interesse, andere Excel-Begeisterte kennenzulernen ? - Dann komme zum

Exceltreffen 12.-14.06.2020 in Freiberg/Sachsen

http://www.exceltreffen.de/index.php?page=291


Anmeldungen sind noch bis 31.03.2020 möglich ! - Schau doch mal rein !

Anzeige
Besser : ISNA(...) verwenden !
13.11.2019 16:01:58
NoNet
Hallo Georg,
noch ein Nachtrag : Wenn Du auf den "echten" Fehler #NV überprüfen möchtest (NV = "Nicht vorhanden", englisch "Not available" ⇒ #N/A), dann solltest Du besser diese Funktion verwenden :
Cells(i,13).Formula="=IF(ISNA(MATCH(F2,L:L,0)),""!!!"",""Ok"")"
Salut, NoNet
AW: Besser : ISNA(...) verwenden !
13.11.2019 16:27:38
Georg
Hallo,
und danke für die schnelle Antwort. Ich teste gern mal ISNA-Funktion aus. Allerdings steckt noch ein Fehler drin, den ich nicht erkenne. Schaue dir bitte das Bild an:
Userbild
Zum Hintergrund: Die Zellen F bzw. L sind Verkettungen der Zellen A, B und E bzw. der Zellen G, H und K. Dabei soll vergleichen werden, ob die Zelle (i,6) irgendwo in der Spalte L auftaucht. Falls das so ist, soll in der Zelle (i, 13) das "Ok" bzw. "!!!" ausgegeben werden.
Allerdings gibt die Formel jeden Mal "Ok" aus. Auch in der oberen Zeile, wo ich eine Zahl verändert habe. (Rote 1 bzw. 2; dieser Wert gibt es in meiner Tabelle nur 1x)
Anzeige
Evtl. Leerzeichen in Zellen enthalten ?
13.11.2019 16:49:30
NoNet
Hallo Georg,
die Tabelle sieht optisch ja ganz korrekt aus und es sollte auch !!! als Ergebnis erscheinen.
Ich kann natürlich nicht erkennen, ob evtl. Leerzeichen oder andere nicht sichtbare Zeichen enthalten sind.
Kannst Du die Tabelle evlt. mal hier hochladen ?
Hier mal ein Beispiel (Funktion in G2), mit der ich die korrekte Funktionalität demonstrieren kann :
Zur besseren Visualisierung sind die Vergleichswerte in Spalte L per Bedingter Formatierung   grün   hervorgehoben, sobald der Wert aus F2 mit dem aus Spalte L übereinstimmt !
Salut, NoNet
Anzeige
AW: Evtl. Leerzeichen in Zellen enthalten ?
13.11.2019 16:57:33
Georg
Hallo,
coole Sache das mit dem Video/GIF. :)
Nein, Leerzeichen sind nicht enthalten. Die Formel in "Excel-Schreibweise" gibt bei mir die Werte korrekt aus. Nur in der "VBA-Schreibweise" nicht.
Ich denke, dass mein Fehler unten in der zweiten Zeile liegen wird.
Vielleicht bei der Stelle >>> (Cells(i,6),L:L, For i = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
Cells(i, 13).Formula = "=IF(ISNA(MATCH(Cells(i,6),L:L,0)),""!!!"",""Ok"")"
Ja, doofer Fehler...
13.11.2019 17:09:42
NoNet
Hi Georg,
tausche diese Codezeile bitte gegen diese hier aus :
Cells(i, 13).FormulaR1C1 = "=IF(ISNA(MATCH(RC6,C12,0)),""!!!"",""Ok"")"
Salut, NoNet
Anzeige
AW: Ja, doofer Fehler...
13.11.2019 17:16:12
Georg
Sauber, es funktioniert. :)
Vielen Dank für deine Mühe! Erklärst du mir bitte noch, warum es nicht funktionierte?
"Cells(i,6)" ist keine Tabellenblattfunktion
13.11.2019 17:32:36
NoNet
Hi Georg,
mit der Schleife hast Du in alle Zellen folgende Funktion ins Tabellenblatt geschrieben :
=WENN(ISTNV(VERGLEICH(Cells(i;6);L:L;0));"!!!";"Ok")
Fällt dir etwas auf ? - Cells(i,6) ist ja keine Funktion, die im Tabellenblatt funktioniert, sondern eine VBA-Funktion (genauer : Ein ZELL-Objekt).
Eigentlich sollte diese Funktion im Tabellenblatt den Fehler #NAME? ausgeben, da der Funktionsname CELLS(...) unbekannt ist. Durch die vorangestellte Fehlerfunktion ISTNV(..) wurde das aber wohl unterdrückt und der Fehler war <>#NV, daher wurde der Wert "OK" ausgegeben anstatt "!!!".
Mit dem zuletzt geposteten Code wird in den Zellen die richtige Funktion (mit absoluten Adressen) eingesetzt, daher funktioniert diese.
Alternativ könnte man auch verwenden :
Cells(i, 13).Formula = "=IF(ISNA(MATCH(F" & i & ",L:L,0)),""!!!"",""Ok"")"
Oder sogar ohne Schleife (wenn die Werte in Spalte A vollständig befüllt sind !) :
    Cells(2, 13).Resize(Cells(Rows.Count, 1).End(xlUp).Row - 1).FormulaR1C1 = _
"=IF(ISNA(MATCH(R[0]C[-7],C[-1],0)),""!!!"",""Ok"")"
Salut, und schönen Abend, NoNet
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige