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

XLookup in VBA mit definierter Range

XLookup in VBA mit definierter Range
08.08.2023 11:08:39
Peter
Moin zusammen,

in einer VBA-Prozedur will ich einen XVerweis einsetzen.
Den Such- und Rückgabebereich will ich zu Beginn so definieren, dass ich später bei Bedarf hier nur einmal Änderungen zu den Bereichen durchführen muss.
wsDaten ist das Arbeitsblatt in dem die zu bearbeitende Matrix steht.

Dim rngSuche As Range
Dim rngResult As Range
Set rngSuche = wsDaten.Range("$J$14:$J$109")
Set rngResult = wsDaten.Range("$P$14:$P$109")
varResult = Application.WorksheetFunction.XLookup("ab", rngSuche, rngResult, 0, 1)

Leider erhalte ich eine Fehlermeldung "Typen unverträglich".
Naja - wahrscheinlich nicht leider ... denn irgendetwas scheine ich ja falsch zu machen :-(

Weiß jemand von Euch was ich falsch mache ... und wie es richtig geht?
Many thanks für Eure Hilfe

Gruß
Peter

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: XLookup in VBA mit definierter Range
08.08.2023 12:48:46
JoWE
Hallo Peter,

irgendwie muss Du Excel schon mitteilen was eigentlich "wsDaten" ist.
Also z.B. so:
Option Explicit


Sub test()
Dim wsDaten As Worksheet
Dim rngSuche As Range
Dim rngResult As Range
Dim varResult
Set wsDaten = Sheets("DeineTabelle")
Set rngSuche = wsDaten.Range("$J$14:$J$109")
Set rngResult = wsDaten.Range("$P$14:$P$109")
varResult = Application.WorksheetFunction.XLookup("ab", rngSuche, rngResult, 0, 1)

End Sub

Gruß
Jochen
XLookup in VBA mit definierter Range
08.08.2023 13:38:09
Peter
Moin Jochen,

merci für Deine Antwort.

wsDaten ist der Codename eines Arbeitsblattes. Damit ist Excel das ja bekannt - hatte ich vergessen, in meinem Post zu erwähnen.
Mit Deinem Hinweis klappts auf jeden Fall ...

Vielen Dank für Deine Zeit und viele Grüße
Peter
Anzeige

321 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Anzeige

Infobox zum Thema

EXCEL - XLookup in VBA mit definierter Range


Inhaltsverzeichnis


Die Fragestellung


Du möchtest in VBA die Funktion XLOOKUP verwenden, um einen Wert in einer definierten Range zu suchen und das entsprechende Ergebnis zurückzugeben.


Erläuterung des Problems {#erläuterung-des-problems}


Die XLOOKUP-Funktion ist eine moderne Alternative zu VLOOKUP und HLOOKUP in Excel, die es ermöglicht, in einer Spalte oder Zeile nach einem Wert zu suchen und ein Ergebnis aus einer anderen Spalte oder Zeile zurückzugeben. In VBA gibt es keine direkte Entsprechung zu XLOOKUP, aber du kannst die Application.WorksheetFunction-Methode verwenden, um Excel-Funktionen in VBA zu nutzen.


Lösung des Problems {#lösung-des-problems}


Hier ist ein Beispiel, wie du XLOOKUP in VBA mit einer definierten Range verwenden kannst:

Sub UseXLookup()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1") ' Anpassen an den Namen deines Arbeitsblatts

    Dim searchRange As Range
    Dim returnRange As Range
    Dim searchValue As Variant
    Dim result As Variant

    ' Definiere die Such- und Rückgabebereiche
    Set searchRange = ws.Range("A2:A10") ' Anpassen an deinen Suchbereich
    Set returnRange = ws.Range("B2:B10") ' Anpassen an deinen Rückgabebereich

    ' Setze den Wert, nach dem gesucht werden soll
    searchValue = "GesuchterWert" ' Anpassen an den gesuchten Wert

    ' Verwende XLOOKUP, um den Wert zu suchen und das Ergebnis zurückzugeben
    On Error Resume Next ' Fehlerbehandlung, falls kein Ergebnis gefunden wird
    result = Application.WorksheetFunction.XLookup(searchValue, searchRange, returnRange)
    On Error GoTo 0 ' Deaktiviere die Fehlerbehandlung

    ' Überprüfe, ob ein Ergebnis gefunden wurde
    If IsError(result) Then
        MsgBox "Der Wert wurde nicht gefunden."
    Else
        MsgBox "Der gefundene Wert ist: " & result
    End If
End Sub

Um dieses Makro zu verwenden:

  1. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Wähle Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Kopiere den oben stehenden Code in das Modul.
  4. Passe die Range-Adressen und den Suchwert im Code an deine Bedürfnisse an.
  5. Schließe den VBA-Editor und gehe zurück zu Excel.
  6. Führe das Makro UseXLookup aus, indem du ALT + F8 drückst, das Makro auswählst und auf Ausführen klickst.

Anwendungsbeispiele aus der Praxis


  • Datenabgleich: Suche nach Artikelnummern in einer Liste und gib die entsprechenden Preise zurück.
  • Datenvalidierung: Überprüfe, ob ein bestimmter Wert in einer Datenbank vorhanden ist, und gib zusätzliche Informationen dazu zurück.

Tipps


  • XLOOKUP ist nur in Excel für Microsoft 365 und Excel 2019 verfügbar. Stelle sicher, dass du eine dieser Versionen verwendest.
  • Verwende On Error Resume Next, um Fehler zu behandeln, falls der gesuchte Wert nicht gefunden wird.

Verwandte Themenbereiche


  • Fehlerbehandlung in VBA
  • Datenmanipulation und -suche in Excel
  • Automatisierung von Lookups in VBA

Zusammenfassung


Die XLOOKUP-Funktion kann in VBA über die Application.WorksheetFunction-Methode genutzt werden, um in einer definierten Range nach einem Wert zu suchen und ein entsprechendes Ergebnis zurückzugeben. Dieses VBA-Beispiel zeigt, wie du XLOOKUP in deinem Code implementieren kannst, um Daten effizient zu durchsuchen und zu verarbeiten.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige