VLOOKUP a Excel VBA | Com escriure un codi VLOOKUP a VBA?

Vlookup és una funció de full de càlcul a Excel, però també es pot utilitzar a VBA, la funcionalitat de Vlookup és similar a la funcionalitat de VBA i de tots dos, ja que és una funció de full de càlcul, el mètode per utilitzar Vlookup a VBA és mitjançant l’aplicació. mètode i els arguments continuen sent els mateixos.

Funció VLOOKUP a Excel VBA

La funció VLOOKUP a Excel s’utilitza per cercar un valor en una matriu i retornar el seu valor corresponent des d’una altra columna. El valor que cal cercar ha d’estar present a la primera columna. També cal esmentar si cal buscar una coincidència exacta o una coincidència aproximada. La funció de full de treball VLOOKUP es pot utilitzar a la codificació VBA. La funció no està integrada a VBA i, per tant, només es pot trucar mitjançant el full de treball.

La funció VLOOKUP a Excel té la sintaxi següent:

En què, lookup_value és el valor que cal cercar, table_arrray és la taula, col_index_num és el número de columna del valor de retorn, range_lookup significa si la coincidència és exacta o aproximada. range_lookup pot ser TRUE / FALSE o 0/1.

Al codi VBA, la funció VLOOKUP es pot utilitzar com:

Application.WorksheetFunction.vlookup (lookup_value, table_array, col_index_num, range_lookup)

Com s'utilitza VLookup a Excel VBA?

A continuació es mostren alguns exemples de codi VLookup a Excel VBA.

Podeu descarregar aquesta plantilla VLookup a Excel VBA aquí - Plantilla VLookup a Excel VBA

Codi de cerca V a l'exemple núm. 1 de l'Excel VBA

Vegem com podem anomenar la funció del full de treball VLOOKUP a Excel VBA.

Suposem que teniu dades de la identificació dels estudiants, el nom i la nota mitjana obtinguda per ells.

Ara voleu cercar les notes obtingudes per un estudiant amb el DNI 11004.

Per cercar el valor, seguiu els passos següents:

  • Aneu a la pestanya Desenvolupador i feu clic a Visual Basic.

  • A la finestra VBA, aneu a Insereix i feu clic a Mòdul.

  • Ara, escriviu el codi VBA VLOOKUP. Es pot utilitzar el següent codi VBA VLOOKUP.

Subvlookup1 ()

Disminueix student_id As Long

Marques febles com a llargues

identificador_estudiant = 11004

Estableix gamma = rang ("B4: D8")

marks = Application.WorksheetFunction.VLookup (student_id, myrange, 3, False)

Finalitzar sub

En primer lloc, definiu un identificador d’estudiant, que és el valor que cal cercar. Per tant, definim:

identificador_estudiant = 11004

A continuació, definim l'abast en què existeixen el valor i el valor de retorn. Com que les nostres dades estan presents a les cel·les B4: D8, definim un rang-gamma com:

Estableix gamma = rang ("B4: D8")

Finalment, introduïm la funció VLOOKUP mitjançant la funció Full de treball en una variable, marca com a:

marks = Application.WorksheetFunction.VLookup (student_id, myrange, 3, False)

Per imprimir les marques en un quadre de missatge, fem servir l'ordre següent:

MsgBox "Estudiant amb identificador:" & student_id & "obtingut" & marques & "marques"

Tornarà:

Estudiant amb DNI: 11004 va obtenir 85 notes.

Ara feu clic al botó d'execució.

Notareu que apareixerà un quadre de missatge al full Excel.

Codi de cerca V a l'exemple VBA d'Excel núm. 2

Suposem que teniu les dades dels noms dels empleats i el seu salari. Aquestes dades es donen a les columnes B i C. Ara, cal escriure un codi VBA VLOOKUP de tal manera que, donat el nom de l’empleat en una cel·la, F4, el sou de l’empleat es retornarà a la cel·la G4.

Escrivim el codi VBA VLOOKUP.

  1. Definiu l'interval en què es presenten els valors, és a dir, les columnes B i C.

Estableix gamma = interval ("B: C")

  1. Definiu el nom de l’empleat i introduïu el nom des de la cel·la F4.

Nom del conjunt = Interval ("F4")

  1. Definiu el salari com a cel·la G4.

Estableix el salari = rang ("G4")

  1. Ara, truqueu a la funció VLOOKUP mitjançant WorksheetFunction a VBA i introduïu-la a salari. Això retornarà el valor (sortida de la funció Vlookup) a la cel·la G4. Es pot utilitzar la sintaxi següent:

salary.Value = Application.WorksheetFunction.VLookup (name, myrange, 2, False)

  1. Ara, executeu el mòdul. La cel·la G4 contindrà el salari de l’empleat després d’executar el codi VBA VLOOKUP.

Suposem que canvieu el valor de la cel·la F4 per "David" al full de càlcul i torneu a executar el codi, que retornarà el sou de David.

Codi de cerca V a l'exemple VBA d'Excel núm. 3

Suposem que teniu les dades de l’empleat de la vostra empresa, que tenen el seu DNI, noms, departament i sou. Utilitzant Vlookup a VBA, voleu obtenir els detalls salarials d’un empleat mitjançant el seu nom i el seu departament.

Com que la funció vlookup a Excel cerca el valor de cerca només en una sola columna, que és la primera columna de la taula_array, cal que primer feu una columna que contingui el "Nom" i el "Departament" de cada empleat.

A VBA, inserim els valors "Nom" i "Departament" a la columna B del full de treball.

Per fer-ho, aneu a la pestanya Desenvolupador i feu clic a Visual Basic. A continuació, aneu a inserir i feu clic a Mòdul per iniciar un mòdul nou.

Escrivim ara codi, de manera que la columna B contingui els valors de la columna D (nom) i la columna E.

La sintaxi es dóna com:

En primer lloc, utilitzeu un bucle "for" des de i = 4, ja que en aquest cas els valors comencen a partir de la quarta fila. El bucle continuarà fins al final de l’última fila de la columna C. Per tant, la variable i es pot utilitzar com a número de fila dins del bucle ‘for’.

A continuació, introduïu el valor que cal assignar a la cel·la (número_ fila, columna B), que es pot indicar com a cel·les (i, "B"). Valor, com a cel·la (número_ fila, columna D) & "_" i cel·la (número_ fila, columna E ).

Suposem que voleu assignar la cel·la B5 = D5 & "_" & E5, simplement podeu utilitzar el codi com:

Cel·les (5, "B"). Valor = Cel·les (5, "D"). Valor i "_" i Cel·les (5, "E"). Valor

Ara, deixeu de cercar el valor de cerca a la matriu B5: E24, primer heu d'introduir el valor de cerca. Prenem el valor (nom i departament) de l'usuari. Fer això,

  1. definiu tres variables, nom, departament i lookup_val com una cadena.
  2. Preneu l’entrada de nom de l’usuari. Utilitzeu el codi:

name = InputBox ("Introduïu el nom de l'empleat")

El contingut del quadre d'entrada "Introduïu el .." es mostrarà al quadre d'indicacions quan executeu el codi. La cadena introduïda a la sol·licitud s'assignarà a la variable de nom.

  1. Preneu el departament de l'usuari. Es pot fer de manera similar a l'anterior.

department = InputBox ("Introduïu el departament de l'empleat")

  1. Assigneu el nom i el departament amb "_" com a separador a la variable lookup_val mitjançant la sintaxi següent:

lookup_val = nom & "_" i departament

  1. Escriviu la sintaxi vlookup per cercar el valor de cerca a l’interval B5: E24, torneu-lo amb un salari variable.

Inicialitzeu el salari variable:

Dim salari tan llarg

Utilitzeu la funció Vlookup per trobar el valor de cerca. El table_array es pot donar com a rang ("B: F") i el salari està present a la 5a columna. Així, es pot utilitzar la sintaxi següent:

salari = Application.WorksheetFunction.VLookup (lookup_val, rang ("B: F"), 5, fals)

  1. Per imprimir el salari en un quadre de missatges, utilitzeu la sintaxi:

MsgBox (El salari de l'empleat és "i salari)

Ara, executeu el codi. Apareixerà un quadre d’indicació al full de treball on podeu introduir el nom. Després d'introduir el nom (Say Sashi) i fer clic a D'acord.

S'obrirà una altra casella en què podeu entrar al departament. Després d’entrar al departament, digueu IT.

S’imprimirà el salari de l’empleat.

Si Vlookup pot trobar algun empleat amb el nom i el departament, donarà un error. Suposem que doneu el nom "Vishnu" i el departament "IT", que retornarà l'error de temps d'execució '1004'.

Per solucionar aquest problema, podeu especificar al codi que, en aquest tipus d'error, imprimiu "Valor no trobat". Fer això,

  1. Abans d’utilitzar la sintaxi vlookup, utilitzeu el codi següent:

En missatge d'error GoTo

Comprovar:

Es controlarà el codi final (de Check :) i, si rep algun error, anirà a la declaració "missatge"

  1. Al final del codi (Before End Sub), especifiqueu que si el número d'error és 1004, imprimiu al quadre de missatge "Dades dels empleats no presents". Això es pot fer mitjançant la sintaxi:

Missatge:

Si Err.Number = 1004, llavors

MsgBox ("No hi ha dades dels empleats")

Finalitza If

Mòdul 1:

Sub vlookup3 ()

Per a i = 4 a cel·les (files.Compte, "C"). Final (xlUp). Fila

Cèl·lules (i, "B"). Valor = Cèl·lules (i, "D"). Valor i "_" & Cèl·lules (i, "E"). Valor

Següent nom iDim Com a cadena

Disminueix el departament As String

Atenuar el valor de cerca com a cadena

Dim salari com a nom llarg = InputBox ("Introduïu el nom de l'empleat")

department = InputBox ("Introduïu el departament de l'empleat")

lookup_val = nom & "_" & departmentOn Missatge d'error GoTo

comprova:

salari = Application.WorksheetFunction.VLookup (lookup_val, rang ("B: F"), 5, fals)

MsgBox ("El salari de l'empleat és" i salari) Missatge:

Si Err.Number = 1004, llavors

MsgBox ("No hi ha dades dels empleats")

Finalitza IfEnd Sub

Coses que cal recordar sobre VLookup a Excel VBA

  • La funció Vlookup es pot cridar a Excel VBA mitjançant WorksheetFunction.
  • La sintaxi de la funció vlookup continua sent la mateixa a Excel VBA.
  • Quan el codi de visualització VBA no pot trobar el valor de cerca, donarà un error 1004.
  • L'error de la funció vlookup es pot gestionar mitjançant una sentència goto si retorna un error.