Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1216to1220
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

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

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
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
Anzeige
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

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige