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

SVERWEIS Leere Einträge überspringen

SVERWEIS Leere Einträge überspringen
Marc
Hallo,
ich habe ein Problem mit dem SVERWEIS. Zwar habe ich nun hinbekommen wie ich Ihn anwende möchte aber gerne, das wenn das "Wonach soll er suchen" leer ist er in die selbe Spalte kein "N/A" sondern gar nichts schreibt. Sprich, das er alle leeren "Input" Spalten überspringt.
Mein bislang funktionierender Code:

Dim was As range, wo As range, wohin as range
Set was = ActiveWorkbook.ActiveSheet.range("A1:A500")
Set wo = Workbooks("Material Master Overview with prices - sauber.XLS").Sheets("Material Master  _
_
Overview with p").range("A1:B4400")
Set wohin = ActiveWorkbook.ActiveSheet.range("C1:C500")
With wohin
.Value = Application.WorksheetFunction.VLookup(was.Value, wo.Value, 2, False)
End With
End Sub


Ich würde mich sehr über eure Hilfe freuen.
Vielen Dank Gruß
Marc

AW: SVERWEIS Leere Einträge überspringen
30.06.2009 19:47:14
Hajo_Zi
Hallo Marc
With wohin
if was.Value"" then
.Value = Application.WorksheetFunction.VLookup(was.Value, wo.Value, 2, False)
end if
End With

AW: SVERWEIS Leere Einträge überspringen
30.06.2009 20:04:31
Marc
Hallo Hajo,
danke für die schnelle Antwort. Ich bekomme beim Ablauf aber ein

Runtime Error '13' - Type Missmatch


in


If was.Value  "" Then


wo, was und wohin sind als wie u.g. as range definert und mit Set zugeordnet.
Danke
Gruß
Marc

Anzeige
AW: SVERWEIS Leere Einträge überspringen
30.06.2009 20:04:43
Marc
Hallo Hajo,
danke für die schnelle Antwort. Ich bekomme beim Ablauf aber ein

Runtime Error '13' - Type Missmatch


in


If was.Value  "" Then


wo, was und wohin sind als wie u.g. as range definert und mit Set zugeordnet.
Danke
Gruß
Marc

AW: SVERWEIS Leere Einträge überspringen
30.06.2009 20:14:55
Hajo_Zi
Hallo Marc,
ich sehe Deine Datei nicht. Vielleicht 0
Gruß Hajo
Dafür braucht man die Datei...
30.06.2009 20:20:33
{Boris}
Hi Hajo,
...nicht zu sehen:

If was.Value  "" Then


kann nicht funktionieren, solange was einem mehrzelligen Bereich zugeordnet ist.
Test mal:


Sub wohl_kaum()
Dim was As Range
Set was = Range("A1:A50")
MsgBox was.Value
End Sub


Allerdings verwundert mich der Satz in der ersten Anfrage:
Mein bislang funktionierender Code:
Grüße Boris

Anzeige
AW: Dafür braucht man die Datei...
30.06.2009 20:31:05
Marc
@Boris
Das mit deinem MsgBox Tip verursacht den selben Fehler.
Und auf deine nicht verstandene von mir getätigte Aussage zu kommen, war mit dem bislang funktionierendem Code, der Vlookup Prozess ohne Berücksichtigung der nicht belegten Zellen gemeint, welches ich hier gerade versuche hinzu zu fügen.
@Hajo
leider klappt

0

auch nicht
Gruß
Marc

Ich hab Dich wohl verstanden...
30.06.2009 20:38:29
{Boris}
Hi Marc,
...aber Dein Ursprungscode kann nicht funktionieren:

Option Explicit
Sub wohl_kaum()
Dim was As Range, wo As Range, wohin As Range
Set was = Range("A1:A500")
Set wo = Range("B1:C4400")
Set wohin = ActiveWorkbook.ActiveSheet.Range("D1:D500")
With wohin
.Value = Application.WorksheetFunction.VLookup(was.Value, wo.Value, 2, False)
End With
End Sub


Im Leben nicht - und auch nicht danach. Daher mein - vereinfachtes - Beispiel - nur des Pudels Kern wegen.
Grüße Boris

Anzeige
AW: Ich hab Dich wohl verstanden...
30.06.2009 20:59:21
Marc
Hey Boris
kannst du mir denn den Gefallen tun und meinen Code so korregieren das er mit meinem Wunsch, das kein Vlookup bei einer leeren Inputzelle statt findet, also die leere Zelle überspringt?
Mit dem Code hier packt er mir überall dort, wo er keine Übereinstimmung erfährt ein N/A rein:

ption Explicit
Sub sver()
Dim was As range, wo As range, wohin As range
Set was = ActiveWorkbook.ActiveSheet.range("A9:A500")
Set wo = Workbooks("Material Master Overview with prices - sauber.XLS").Sheets("Material Master  _
Overview with p").range("A1:B4400")
Set wohin = ActiveWorkbook.ActiveSheet.range("C9:C500")
With wohin
.Value = Application.WorksheetFunction.VLookup(was.Value, wo.Value, 2, False)
End With
End Sub


Danke

Anzeige
Sorry, aber...
30.06.2009 21:06:22
{Boris}
Hi Marc,
...ich will Dir einfach nicht glauben, dass Dein bisheriger Code überhaupt irgendein Ergebnis liefert - und sei es N/A.
Ergo werde ich da auch nicht rumbasteln, denn das führt nur vom berühmten Hölzchen zum Stöckchen.
Den grundlegenden Fehler hab ich Dir - imho - deutlich genannt.
Zudem dürfte

wo.Value


auch nicht funktionieren, da SVERWEIS (Vlookup) als 2. Parameter den Datentyp Matrix verlangt - und das kann in Verbindung mit der Value-Eigenschaft so oder so nicht funktionieren.
Grüße Boris

Anzeige
Noch offen...
30.06.2009 21:10:39
{Boris}
Hi Marc,
...denn ich bin erstmal weg. Meine Beiträge zu Deiner Frage mögen Dich nicht direkt befriedigen, aber wenn Du Dich wirklich damit beschäftigst, wirst Du imho viel mehr lernen, als wenn Du hier nen funktionierenden Code gepostet bekommst, bei dem Du nicht verstehst, warum er funktioniert (bzw. warum es der bisherige nicht tut).
Nix für ungut - we will see.
Grüße Boris
AW: Noch offen...
01.07.2009 14:11:41
Marc
Hallo Boris
nenne mir bitte einen vernünftigen Grund warum ich in als Ingineur in einem Fachkompetenen Exel-Forum eine Frage stellen würde, die ich auf einer Lüge, in diesem Fall einem falschen nicht funktionierenden Code, aufbauen würde?
Der o.g. und hier nochmals wiederholte Code gibt bei Übereinstimmung den gewünschten Wert aus schreibt aber ein N/A bei Nichtübereinstimmung. Mein Ziel, auf welches ich auch nach längerer Eingenarbeit nicht gekommen bin ist, das leere Spalten übersprungen werden.

Sub sver()
Dim was As range, wo As range, wohin As range
Set was = ActiveWorkbook.ActiveSheet.range("A9:A500")
Set wo = Workbooks("Material Master Overview with prices - sauber.XLS").Sheets("Material Master  _
Overview with p").range("A1:B4400")
Set wohin = ActiveWorkbook.ActiveSheet.range("C9:C500")
With wohin
.Value = Application.WorksheetFunction.VLookup(was.Value, wo.Value, 2, False)
End With
End Sub


Anbei habe ich zur Veranschaulichung die Ausgangsmappe und die Mappe aus der er Daten liest angehangen.
Userbild
Userbild
Ich hoffe auf eure Hilfe
Gruß
Marc

Anzeige
Ich kenn keinen Grund...
01.07.2009 15:02:03
{Boris}
Hi Marc,
nenne mir bitte einen vernünftigen Grund warum ich in als Ingineur in einem Fachkompetenen Exel-Forum eine Frage stellen würde, die ich auf einer Lüge, in diesem Fall einem falschen nicht funktionierenden Code, aufbauen würde?
Das will ich gar nicht unterstellen - und mir fällt auch kein Grund ein ;-)
Allerdings habe ich es - auch unter größter Anstrengung - nicht geschafft, den Code zum Laufen zu bringen, was an diesen 2 Fehlern liegt:

With wohin
.Value = Application.WorksheetFunction.VLookup(was.Value, wo.Value, 2,  _
False)
End With


Also - nix für ungut. Dierk hat Dir ja den Code gepostet.
Grüße Boris

Anzeige
AW: SVERWEIS Leere Einträge überspringen
30.06.2009 21:31:35
D.Saster
Hallo,
eigentlich ist es ziemlich dreist zu behaupten, der Code hätte funktioniert.
Aber trotzdem:

Sub test()
Dim was As Range, wo As Range
Dim wasZelle As Range, varWert As Variant
Application.ScreenUpdating = False
Set was = ActiveWorkbook.ActiveSheet.Range("A1:A500")
Set wo = Workbooks("Material Master Overview with prices - sauber.XLS"). _
Sheets("Material Master Overview with p").Range("A1:B4400")
For Each wasZelle In was
varWert = Application.VLookup(wasZelle.Value, wo, 2, 0)
If Not IsError(varWert) Then wasZelle.Offset(, 2) = varWert
Next
Application.ScreenUpdating = True
End Sub


Gruß
Dierk

Anzeige
AW: SVERWEIS Leere Einträge überspringen
01.07.2009 14:43:49
Marc
Hallo Dierk
ich danke dir vielmals für deine schnelle Hilfe.
Gruß
Marc

40 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige