¿Cómo usar funciones de hoja de trabajo como BUSCARV en VBA Excel?

Tabla de contenido:

Anonim

Las funciones como VLOOKUP, COUNTIF, SUMIF se denominan funciones de hoja de trabajo. Generalmente, las funciones predefinidas en Excel y listas para usar en una hoja de trabajo son funciones de hoja de trabajo. No puede alterar o ver el código detrás de estas funciones en VBA.

Por otro lado, las funciones definidas por el usuario y las funciones específicas de VBA como MsgBox o InputBox son funciones de VBA.

Todos sabemos cómo usar las funciones de VBA en VBA. Pero, ¿qué pasa si queremos usar VLOOKUP en un VBA? ¿Como hacemos eso? En este artículo, exploraremos exactamente eso.

Uso de funciones de hoja de trabajo en VBA

Para acceder a la función de la hoja de trabajo usamos una clase de Aplicación. Casi todas las funciones de la hoja de trabajo se enumeran en la clase Application.WorksheetFunction. Y usando el operador de puntos, puede acceder a todos ellos.

En cualquier sub, escriba Application.WorksheetFunction. Y empieza a escribir el nombre de la función. El intellisense de VBA mostrará el nombre de las funciones disponibles para usar. Una vez que haya elegido el nombre de la función, le pedirá las variables, como cualquier función en Excel. Pero tendrá que pasar variables en formato VBA comprensible. Por ejemplo, si desea pasar un rango A1: A10, tendrá que pasarlo como un objeto de rango como Rango ("A1: A10").

Así que usemos algunas funciones de la hoja de trabajo para entenderlo mejor.

Cómo utilizar la función BUSCARV en VBA

Para demostrar cómo puede usar una función VLOOKUP en VBA, aquí tengo datos de muestra. Necesito mostrar el nombre y la ciudad de la identificación de inicio de sesión dada en un cuadro de mensaje usando VBA. Los datos se distribuyen en el rango A1: K26.

Presione ALT + F11 para abrir VBE e insertar un módulo.

Consulte el siguiente código.

Sub WsFuncitons () Dim loginID As String Dim name, city As String loginID = "AHKJ_1-3357042451" 'Usando la función VLOOKUP para obtener el nombre de la identificación dada en el nombre de la tabla = Application.WorksheetFunction.VLookup (loginID, Range ("A1: K26" ), 2, 0) 'Usando la función BUSCARV para obtener la ciudad de la identificación dada en la tabla ciudad = Application.WorksheetFunction.VLookup (loginID, Range ("A1: K26"), 4, 0) MsgBox ("Nombre:" & nombre & vbLf & "City:" & city) End Sub 

Cuando ejecute este código, obtendrá este resultado.

Puede ver qué tan rápido el VBA imprime el resultado en un cuadro de mensaje. Ahora examinemos el código.

¿Como funciona?

1.

Dim loginID como cadena

Dim nombre, ciudad como cadena

Primero hemos declarado dos variables de tipo cadena para almacenar el resultado devuelto por la función BUSCARV. He usado variables de tipo cadena porque estoy seguro de que el resultado devuelto por BUSCARV será un valor de cadena. Si se espera que la función de la hoja de trabajo devuelva número, fecha, rango, etc., tipo de valor, use ese tipo de variable para almacenar el resultado. Si no está seguro de qué tipo de valor devolverá la función de la hoja de trabajo, utilice variables de tipo de variante.

2.

loginID = "AHKJ_1-3357042451"

A continuación, hemos utilizado la variable loginID para almacenar el valor de búsqueda. Aquí hemos utilizado un valor codificado. También puedes usar referencias. Por ejemplo. Puede usar Range ("A2"). Value para actualizar dinámicamente el valor de búsqueda del rango A2.

3.

name = Application.WorksheetFunction.VLookup (loginID, Range ("A1: K26"), 2, 0)

Aquí usamos la función BUSCARV para obtener. Ahora, cuando corrija la función y abra el paréntesis, le mostrará los argumentos requeridos pero no tan descriptivos como se muestra en Excel. Ver por ti mismo.

Debe recordar cómo y qué variable debe usar. Siempre puede volver a la hoja de trabajo para ver los detalles descriptivos de la variable.

Aquí, el valor de búsqueda es Arg1. Para Arg1 usamos loginID. La tabla de búsqueda es Arg2. Para Arg2 usamos Range ("A1: K26"). Tenga en cuenta que no usamos directamente A2: K26 como lo hacemos en Excel. El índice de columnas es Arg3. Para Arg3 usamos 2, ya que el nombre está en la segunda columna. El tipo de búsqueda es Arg4. Usamos 0 como Arg4.

ciudad = Application.WorksheetFunction.VLookup (loginID, Range ("A1: K26"), 4, 0)

Del mismo modo, obtenemos el nombre de la ciudad.

4.

MsgBox ("Nombre:" & nombre & vbLf & "Ciudad:" & ciudad)

Finalmente imprimimos nombre y ciudad usando Messagebox.

¿Por qué usar la función de hoja de trabajo en VBA?

Las funciones de la hoja de trabajo poseen el poder de cálculos inmensos y no sería inteligente ignorar el poder de las funciones de la hoja de trabajo. Por ejemplo, si queremos la desviación estándar de un conjunto de datos y desea escribir código completo para esto, puede llevarle horas. Pero si sabe cómo usar la función de hoja de trabajo STDEV.P en VBA para obtener el cálculo de una vez.

Sub GetStdDev () std = Application.WorksheetFunction.StDev_P (Range ("A1: K26")) End Sub 

Uso de funciones de hoja de trabajo múltiples VBA

Digamos que necesitamos usar una coincidencia de índice para recuperar algunos valores. Ahora, ¿cómo escribirías la fórmula en VBA? Esto es lo que supongo que escribirás:

Sub IndMtch () Val = Application.WorksheetFunction.Index (result_range, _ Application.WorksheetFunction.Match (lookup_value, _ lookup_range, match_type)) End Sub 

Esto no está mal, pero es largo. La forma correcta de usar múltiples funciones es usando un bloque With. Vea el siguiente ejemplo:

Sub IndMtch () con Application.WorksheetFunction Val = .Index (result_range, .Match (lookup_value, lookup_range, match_type)) val2 = .VLookup (arg1, arg2, arg3) val4 = .StDev_P (números) End With End Sub 

Como puede ver, he usado With block para decirle a VBA que usaré las propiedades y funciones de Application.WorksheetFunction. Entonces no necesito definirlo en todas partes. Acabo de usar el operador de punto para acceder a las funciones INDICE, MATCH, VLOOKUP y STDEV.P. Una vez que usamos la instrucción End With, no podemos acceder a las funciones sin usar nombres de función completamente calificados.

Entonces, si tiene que usar varias funciones de hoja de trabajo en VBA, use con block.

No todas las funciones de la hoja de trabajo están disponibles a través de la aplicación.

Algunas funciones de la hoja de trabajo están disponibles directamente para usar en VBA. No es necesario utilizar el objeto Application.WorksheetFunction.

Por ejemplo, funciones como Len () que se usa para obtener el número de caracteres en una cadena, izquierda, derecha, mitad, recorte, desplazamiento, etc. Estas funciones se pueden usar directamente en VBA. Aquí hay un ejemplo.

Sub GetLen () Strng = "Hola" Debug.Print (Len (strng)) End Sub 

Mira, aquí usamos la función LEN sin usar el objeto Application.WorksheetFunction.

Del mismo modo, puede usar otras funciones como left, right, mid, char, etc.

Sub GetLen () Strng = "Hola" Debug.Print (Len (strng)) Debug.Print (left (strng, 2)) Debug.Print (right (strng, 1)) Debug.Print (Mid (strng, 3, 2)) Fin Sub 

Cuando ejecute el sub anterior, devolverá:

5 Él o ll 

Así que sí, chicos, así es como pueden usar la función de hoja de trabajo de Excel en VBA. Espero haber sido lo suficientemente explicativo y este artículo te haya ayudado. Si tiene alguna pregunta con respecto a este artículo o cualquier otra cosa relacionada con VBA, pregunte en la sección de comentarios a continuación. Hasta entonces, puede leer sobre otros temas relacionados a continuación.

¿Qué es la función CSng en Excel VBA? | La función SCng es una función VBA que convierte cualquier tipo de datos en un número de punto flotante de precisión simple ("dado que es un número"). Utilizo principalmente la función CSng para convertir números con formato de texto en números reales.

Cómo obtener texto y número en reversa a través de VBA en Microsoft Excel | Para invertir el número y el texto usamos bucles y la función mid en VBA. 1234 se convertirá en 4321, "usted" se convertirá en "uoy". Aquí está el fragmento.

Formatee los datos con formatos numéricos personalizados usando VBA en Microsoft Excel | Para cambiar el formato numérico de columnas específicas en Excel, use este fragmento de VBA. Convierte el formato numérico del formato especificado al formato especificado con un solo clic.

Uso del evento de cambio de hoja de trabajo para ejecutar una macro cuando se realiza algún cambio | Entonces, para ejecutar su macro cada vez que se actualiza la hoja, usamos los Eventos de la hoja de trabajo de VBA.

Ejecutar macro si se realiza algún cambio en la hoja en el rango especificado | Para ejecutar su código de macro cuando cambia el valor en un rango específico, use este código VBA. Detecta cualquier cambio realizado en el rango especificado y disparará el evento.

El código VBA más simple para resaltar la fila y columna actual usando | Utilice este pequeño fragmento de VBA para resaltar la fila y columna actuales de la hoja.

Articulos populares:

50 accesos directos de Excel para aumentar su productividad | Acelera tu tarea. Estos 50 accesos directos le permitirán trabajar aún más rápido en Excel.

La función BUSCARV en Excel | Esta es una de las funciones más utilizadas y populares de Excel que se utiliza para buscar valores de diferentes rangos y hojas.

CONTAR.SI en Excel 2016 | Cuente valores con condiciones usando esta asombrosa función. No necesita filtrar sus datos para contar valores específicos. La función Countif es esencial para preparar su tablero.

Cómo usar la función SUMIF en Excel | Esta es otra función esencial del tablero. Esto le ayuda a resumir valores en condiciones específicas.