Xlookup con múltiples criterios en VBA
Siento que esto es algo estúpidamente simple, pero he estado buscando en Google y experimentando durante un rato y parece que no encuentro nada. Supongo que estoy buscando el término/palabra equivocado. De todas formas, déjame explicarlo.
Por ejemplo:
este código: Error de tiempo de ejecución ’13’ Coincidencia de tipos
Dim ws, sh As Worksheet
Set ws = Worksheets(“Sheet1”)
Set sh = Worksheets(“Sheet2”)
Dim Ctr1, Ctr2, Result As Range
Set Ctr1 = ws.Range(“A2:A100”)
Set Ctr2 = ws.Range(“B2:B100”)
Set Result = ws.Range(“C2:C100”)
With sh
.Cells(2, 7).Value = WorksheetFunction.XLookup( _
.Cells(2, 5) & .Cells(2, 6), Ctr1 & Ctr2, Result, 0)
End With
End Sub
davy.ai
El error “Run-Time error ’13’ Type mismatch” ocurre cuando hay una discrepancia entre el tipo de dato de una variable y el tipo de dato esperado por una operación o función en particular.
En este código específico, es probable que el problema esté en los valores de entrada para la función XLookup. La función XLookup espera una entrada de rangos o matrices, pero en este caso se le están pasando cadenas de texto (la concatenación de Cells(2, 5) y Cells(2, 6)). Para corregir esto, las variables Ctr1 y Ctr2 deben ser combinadas antes de ser pasadas como argumento a la función XLookup.
La línea de código corregida sería:
.Cells(2, 7).Value = WorksheetFunction.XLookup(.Cells(2, 5) & .Cells(2, 6), Application.Index(Ctr1 & Ctr2, 0), Result, 0)
Al utilizar la función Application.Index, el programa puede combinar los dos rangos en una sola matriz para ser pasada a la función XLookup.