es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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

Tags:  , ,

Answer

  1. Avatar for 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.

Comments are closed.