Encontrar el n-esimo valor en lista excel

Hola, la cuestión es la siguiente:
Tengo un listado de valores, y necesito encontrar cual es la posición absoluta de un valor en especial, me explico:
En una lista de los números del 1 al 10 ingresados en la columna B, empezando en la fila 1; ¿He reemplazado los números 4,7 y 9 por "2" (entonces tengo cuatro "2") ok?.
Necesito crear una fórmula personalizada (lo necesito para una tabla de calculo y la verdad no quiero usar una macro, porque la idea es que se actualice automáticamente y permita usar la referencia a otras celdas, bueno la macro funcionaria pero quiero hacerlo por acá, vamos a ver si es posible).
He trabajado en el código pero me arroja la posición del ultimo valor, no logro hacer que funcione limitando el numero de veces que lo busca (se va a un loop infinito, por tanto he suprimido algunas lineas en este código)
Function find_by_val(valorbuscado As Double, rango As Range, indice As Integer) As Integer
Dim celda As Range
Dim fila As Integer
On Error Resume Next
Application.Volatile
For Each celda In rango
    If Val(celda) = valorbuscado Then
        fila = celda.Row
    End If
Next celda
find_by_val = fila
End Function
valorbuscado es el valor o la referencia a la celda que estoy buscando
rango es la lista donde debe ser buscado el valor
indice es el numero de veces que debe buscar
Si uso la fórmula así: find_by_val(2, b1:b10, 3) me arroja "9" pero es que ese valor corresponde a la ultima fila que contiene el valor buscado (2), pero la idea es que arroje "7" ya que es en esta fila que se encuentra el tercer "2" que hay en la lista.
Perdón por haberme extendido tanto, pero creo que quedo claro.
Quedo pendiente, y desde ya, Gracias

1 Respuesta

Respuesta
1
Pruébala así:
Function find_by_val(valorbuscado As Double, rango As Range, indice As Integer) As Integer
Dim celda As Range
Dim fila As Integer, i as Integer
On Error Resume Next
Application.Volatile
i = 1
For Each celda In rango
    If Val(celda) = valorbuscado And i <= indice Then
        fila = celda.Row
        i = i + 1
    End If
Next celda
find_by_val = fila
End Function
PD) Tu historial ya muestra 1 consulta sin finalizar. Podemos comprender que en 1 ocasión no hayas podido cerrarla a tiempo, la 2da será considerada como negligencia de tu parte.
Simplemente genial, en cuanto a lo de la pregunta sin finalizar, pues no la he visto, pero bueno, ya que
Aunque puedo jurar que ya lo había probado así, se me iba al loop que les comentaba, 'me ha andado de maravilla'
Muchas gracias!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas