Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1688to1692
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 mit horizontalen Suchbegriffen

SVERWEIS mit horizontalen Suchbegriffen
06.05.2019 11:58:21
Paul
Hallo zusammen,
dank eurer Hilfe habe ich nun schon einen Sverweis auf eine externe Dateien mit dynamischen Dateinamen hinbekommen. Vielen Dank nochmal!
Nun versuche ich mich an einem Verweis, bei dem die Suchkriterien horizontal in einer Zeile stehen.
Es ist eigentlich eine einfache Matrix mit der vertikalen Achse Namen und der horizontalen Achse Monate, die befüllt werden soll.
Die Namen in der Spalte B geben an welche Dateien durchsucht werden sollen. durch die Spalte B definiert. Die Dateinamen sind immer wie folgt aufgebaut: Info_"Name".xlsx.
Nun soll für jeden Namen und Monat (C2:N2) in der entsprechenden Quelldatei (Info_"Name") in der Matrix E3:F14 den entsprechenden Wert gefunden werden.
E3:F14 hat in der Spalte E die Monate und in F die zu findenden Daten. (Spaltenindex 2)
Ich habe versucht den Code unten entsprechend zu verändern, weil er eigentlich schon sehr schöne Sicherheitsmechanismen enthält, aber es bisher nicht hinbekommen :(
Vielen Dank vorab für eure Unterstützung.
'Code in einem allgemeinen Modul
Sub LookupValues()
Dim r As Range
Dim wbLookup As Workbook, wbDestiny As Workbook
Dim searchRange As Range
Dim searchValue As Variant
Dim sPfadQuelle As String, sDatei As String
Dim varWert
Application.ScreenUpdating = False
sPfadQuelle = "C:\Users\xxx\Desktop\Test\"      'Pfad ggf. anpassn
On Error GoTo Errhandler
Set wbDestiny = ThisWorkbook ' Workbooks("Paul.xlsm") 'HIER NAME DER ZIELDATEI ENTSPRECHEND  _
_
_
ÄNDERN
'HINWEIS QUELLDATEIEN R DURCHSCHLEIFEN
For Each r In wbDestiny.Sheets("A").Range("D3:D21").Cells 'Blattname ggf anpassen
If r.Text = "Projekt" Then
r.Offset(0, 4).Value = "" '? ggf. Zeile weglasen
Else
sDatei = sPfadQuelle & "Info_" & r.Text & ".xlsx" 'HIER Syntaxt für Dateiname ggf.   _
_
_
ANPASSEN
If Dir(sDatei) = "" Then
MsgBox "Datei """ & sDatei & """ niht gefunden"
Else
searchValue = r.Offset(0, -3).Value
Set wbLookup = Workbooks.Open(sDatei, ReadOnly:=True)
Set searchRange = wbLookup.Sheets(1).Range("A4:C27")
varWert = Application.VLookup(searchValue, searchRange, 3, False)
If IsError(varWert) Then
r.Offset(0, 4).Value = "#NV!"
Else
r.Offset(0, 4).Value = varWert
End If
wbLookup.Close savechanges:=False
End If
End If
Next r
GoTo Beenden
Errhandler:
MsgBox Err.Description, vbCritical
Beenden:
Application.ScreenUpdating = True
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nachdem du den SVERWEIS nachpgmmiert hast, ...
07.05.2019 18:40:41
Paul
Hallo Luc,
vielen Dank für deine Antwort.
Ne es muss kein WVERWEIS sein, falls du der Ansicht bist, das eine Xl-Fktt die bessere Lösung ist :)
Hättest du dafür Code?
Beste Grüße,
Paul
Anzeige
Was ist mit WorksheetFunction in einer Sub? owT
08.05.2019 03:25:04
Luc:-?
:-?
AW: Was ist mit WorksheetFunction in einer Sub? owT
08.05.2019 10:43:06
Paul
Hallo Luc,
wenn ich ehrlich bin reicht mein Verständnis von VBA hier nicht weit genug aber wenn du meinst, dass das eine bessere Lösung darstellt?
Mit WorksheetFunction.HLookUp kannst du ...
08.05.2019 19:03:13
Luc:-?
…Xl-Fkt WVERWEIS in einem VBA-Pgm verwenden, Paul,
aber nur so, wie vom Pgmmierer ursprünglich vorgesehen und natürlich entsprd VBA-Syntax. Fehler müssen abgefangen wdn und lassen die ErgebnisVariable leer (bzw 0). Mit einer ErgebnisVariable vom Datentyp Variant kann man auch Fehlerwerte erhalten, wenn man Application.HLookUp verwendet. Diese Form wird aber im Ggsatz zur anderen nicht vom VBE-Intellisense unterstützt, d.h., nach Pkt-Eingabe wird dir keine Fktsliste zur Auswahl angezeigt.
Eine Alternative wäre die Verwendung des Xl-Fml-Textes in US-Original-Notation als Argument der vbFkt Evaluateergebnis = ActiveSheet.Evaluate("originalformeltext"). (Nur Evaluate bezieht sich auf die Application und wird doppelt so oft berechnet.)
Das erspart dir ggf Schleifen und dein Pgm kann folglich kürzer wdn. Es sei denn, du willst (zu Übungszwecken) unbedingt nach­pro­gram­mieren…
Luc :-?
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige