En un comentario de esta entrada del blog (ver) un lector preguntaba por la forma de realizar una búsqueda aproximada (por exceso) de un valor dado.
Si partimos de estos datos en el rango B2:M10
Deberemos retocar la función personalizada (UDF) del post anterior.. incorporándole un bucle DO...LOOP para localizar el siguiente valor superior al buscado más próximo.
Al no saber cuál es la diferencia de esa aproximación, he optado por incluir una salido del bucle cuando la diferencia llegue al valor buscado +10.
El bucle comenzaría con
DO
'la búsqueda por fila y columna..
LOOP UNTIL x=10
Así añadiremos nuestro código en un módulo estándar de nuestro explorador de proyectos:
OJO, devuelve la primera coincidencia!!
Si partimos de estos datos en el rango B2:M10
Deberemos retocar la función personalizada (UDF) del post anterior.. incorporándole un bucle DO...LOOP para localizar el siguiente valor superior al buscado más próximo.
Al no saber cuál es la diferencia de esa aproximación, he optado por incluir una salido del bucle cuando la diferencia llegue al valor buscado +10.
El bucle comenzaría con
DO
'la búsqueda por fila y columna..
LOOP UNTIL x=10
Así añadiremos nuestro código en un módulo estándar de nuestro explorador de proyectos:
Function busqueda(valor) 'función que busca un valor APROXIMADO dado en el rango B2:M10. 'iniciamos un contador que usaremos como diferencia a partir del valor dado x = 1 Do 'c recorre las columnas de la matriz, de la 2ª a la 13ª. For c = 2 To 13 'f recorre las filas de la matriz, de la 2ª a la 10ª. For f = 2 To 10 'si encontramos el valor aproximado nos detenemos 'y salimos de la función If Cells(f, c).Value = valor + x Then busqueda = Cells(f, 1).Value Exit Function End If Next f Next c x = x + 1 'detenemos el bucle en una aproximación de +10 Loop Until x = 10 End Function
OJO, devuelve la primera coincidencia!!
MUY BUENA
ResponderEliminarHola, a veces quiero encontrar valores identicos pero con signos contrarios, es decir uno positivo y el otro negativo, con que funcion o que herramienta en Excel puedo usar para lograr esto.-
ResponderEliminarHola Concepción,
Eliminarexiste una función ABS que devuelve el valor absoluto del valor, por ejemplo,
en A1 = -10
en B1 = 10
en C1:
=ABS(A1)=ABS(B1)
lo que devolverá VERDADERO, esto es, indica si son 'iguales'
Espero te sirva
Saludos