Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VLOOKUP - String einsetzen, wenn Wert vorhanden

VLOOKUP - String einsetzen, wenn Wert vorhanden
Peter
Guten Tag
Ich arbeite innerhalb eines Spaltenbereiches jeden Wert ab und möchte alle Werte durch den Eintrag "Separat" ersetzen, sofern dieser Wert im Bereich, der mit "vSeparat" benannt wurde, eingetragen ist.
Im Moment erhalte ich den Laufzeitfehler '1004'
If Application.WorksheetFunction.VLookup(rngZelle.Value, Range("vSeparat"), 1, False) = rngZelle.Value Then rngZelle = "Separat"
Ich habe das Problem in einer Datei nachgebaut:
https://www.herber.de/bbs/user/75184.xls
Vielen Dank und Gruss, Peter
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
oder 2 x For Each ...
06.06.2011 16:28:13
Matthias
Hallo
eine getestete Variante (für diesen kleinen Bereich gehts auch so)
Sub Eintrag()
Dim rngZelle As Range, rngseparat As Range
For Each rngZelle In Range("Bearbeiten")
For Each rngseparat In Range("Vseparat")
If rngZelle.Value = rngseparat.Value Then rngZelle.Offset(, 1) = Range("D3").Value
Next
Next
End Sub
https://www.herber.de/bbs/user/75185.xls
Userbild
Anzeige
AW: oder 2 x For Each ...
06.06.2011 16:36:05
Peter
Hallo Matthias
Vielen Dank. Das funktioniert. Da ich bei meiner Problemstellung erheblich mehr Spalteneinträge habe, lasse ich den Eintrag noch offen - wäre toll, wenn jemand mir sagen könnte, wo's bei meinem Lösungsansatz klemmt.
Danke und Gruss, Peter
oder so ...
06.06.2011 16:41:10
Matthias
Hallo
Hab gerade gesehen, das Du ja direkt ersetzen willst, dann vielleicht so ...
Sub Version1()
Dim rngZelle As Range, rngseparat As Range
For Each rngZelle In Range("Bearbeiten")
For Each rngseparat In Range("Vseparat")
If rngZelle.Value = rngseparat.Value Then rngZelle.Value = Range("D3").Value
Next
Next
End Sub

Sub Version2()
Dim rngZelle As Range
For Each rngZelle In Range("Bearbeiten")
If Application.WorksheetFunction.CountIf(Range("vSeparat"), rngZelle) > 0 Then rngZelle.Value = _
"Separat"
Next
End Sub

Userbild
Anzeige
Vielen Dank, owT!
07.06.2011 15:18:00
Peter
VLOOKUP - oder besser Match
07.06.2011 08:14:15
Erich
Hi Peter,
den VLookuop = SVERWEIS brauchst du hier nicht wirklich. Esgeht dir nur darum, ob ein Wert in einer Liste gefunden wird.
Dafür reicht Match = VERGLEICH völlig aus.
Der 1004 entsteht, wenn der Begriff nicht gefunden wird - SVERWEIS (VLookup) liefert einen Fehlerwert #NV.
Application.WorksheetFunction.VLookup(... ergibt dann den 1004.
Mit Application.VLookup(... - also ohne WorksheetFunction. - würde es hier noch nicht knallen,
aber einen Moment später, beim Versuch, den Fehlerwert mit rngZelle.Value zu vergleichen.
Das gibt Fehler 13 - Type Mismatch.
So, genug "gemeckert"! So sollte es gehen:

Sub Eintrag2()
Dim rngZelle As Range
For Each rngZelle In Range("Bearbeiten")
If Not IsError(Application.VLookup( _
rngZelle.Value, Range("vSeparat"), 1, False)) Then _
rngZelle = "Separat"
'oder besser:
If IsNumeric(Application.Match( _
rngZelle.Value, Range("vSeparat"), 0)) Then _
rngZelle = "Separat"
Next rngZelle
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: VLOOKUP - oder besser Match
07.06.2011 15:20:42
Peter
Hallo Erich
Vielen Dank! Wenn das von dir ein "Gemecker" ist, dann schätze ich es, da immer lehrreich.
Ich habe die Variante mit MATCH verwendet und es hat gematcht!
Freundlicher Gruss, Peter
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige