Texto de Vlookup
La función estándar de Vlookup se puede utilizar para encontrar un valor dentro de una tabla:
Y usaríamos BUSCARV así:
= BUSCARV (A1: 10, "Perro", 2, FALSO)
para dar el valor 30.
Sin embargo, en esta lista vemos que Perro ocurre 3 veces. La función VLOOKUP estándar solo devolverá el valor asociado con el primer elemento de esta lista. No devolverá el 125 o 9,250 con la segunda o tercera instancia de "perro" en esta lista.
Resultados múltiples de Vlookup
La siguiente función nos permite especificar un rango, una expresión a buscar y la instancia (número de resultado) y luego devolver el valor correspondiente:
Función Find_nth_Occurrence (Column_Range como rango, Expresión como cadena, Occ como entero) Como doble Dim Cell Dim Occurrences_to_date como entero Find_nth_Occurrence = 1000000 Occurrences_to_date = 0 Para cada celda en Column_Range Si Cell.Value = Expression Then Occurrences_to_date = Occurrences_to_date = Occurrences_to_date = Occurrences_to_date Entonces Find_nth_Occurrence = Cell.Offset (0, 1) .Value End If End If Next Cell End Function
La principal diferencia entre esto y la función VLOOKUP estándar es que, en este caso, el rango es el único rango de etiquetas, no todo el rango de datos.
La siguiente es una subrutina que llama a esta función en función del evento de clic de un botón de comando. Busca en el rango A1: A8 en Sheet2, para la tercera instancia de la palabra Perro:
Private Sub CommandButton1_Click () Atenuar respuesta como respuesta doble = Find_nth_Occurrence (Sheets ("Sheet2"). Range ("A1: A8"), "Dog", 3) MsgBox AnswerEnd Sub
La variable "Respuesta" almacena el resultado de la función, que luego se muestra en un Msgbox en la pantalla:
> Sin embargo, si la palabra no se puede encontrar en la lista o la frecuencia no aparece, por ejemplo, no hay una quinta instancia de la palabra "Perro", se devuelve el valor de 1,000,000: -
Respuesta = Find_nth_Occurrence (Hojas ("Hoja2"). Rango ("A1: A8"), "Perro", 5)
O
Respuesta = Find_nth_Occurrence (Hojas ("Hoja2"). Rango ("A1: A8"), "Caballo", 2)