el menor de los mayores (excel)

  • 15 respuestas
    • Peque09
      Peque09
      Bronce
      Registro: 02-28-2009 Artículos: 679
      En Excel, ¿verdad?

      Si los números del rango están ordenados, es muy fácil hacerlo con una función que se llama "LOOKV" o "LOOKH" o algo así (según si están en una fila o en una columna). Yo lo he usado alguna vez, pero ahora mismo no recuerdo cómo era la sintaxis completa.

      O le echas un vistazo a la ayuda de Excel y te buscas esa función, o subes el archivo y explicas más despacio lo que quieres hacer e intento ayudarte trabajando directamente con el problema en cuestión: me resulta más difícil explicarlo así "en general" que resolver un ejemplo.

      Si los números del rango no están ordenados, creo que ya es un poco más complicado, la verdad. No estoy seguro, pero creo que tendrías que programarte una macro.

      En cualquier caso, puedes esperar a ver si alguien más se pasa, que yo tampoco es que sea un experto en Excel.

      Un saludo.
      Peque
    • chaparrito77
      chaparrito77
      Entrenador
      Entrenador
      Registro: 05-04-2009 Artículos: 3.063
      Para la funcion LOOKV recuerda que la lista tiene los siguientes requisitos:

      1. Estar en orden
      2. Estar en la columna que este mas a la izquierda (por no decir columna A)


      o sea el rango donde vas a buscar columna A y la funcion en cualquiera de las siguietnes columnas, sino se hace asi, te dara un ERROR
    • Peque09
      Peque09
      Bronce
      Registro: 02-28-2009 Artículos: 679
      original de chaparrito77
      Para la funcion LOOKV recuerda que la lista tiene los siguientes requisitos:

      1. Estar en orden
      2. Estar en la columna que este mas a la izquierda (por no decir columna A)


      o sea el rango donde vas a buscar columna A y la funcion en cualquiera de las siguietnes columnas, sino se hace asi, te dara un ERROR
      No sé si te he entendido: ¿dices que la columna donde está el rango tiene que ser la de más a la izquierda de la hoja entera? ¿o te refieres a que sea la columna de más a la izquierda de las celdas en que aplicas la función?

      Si es lo primero, juraría que no: puedes tener muchas columnas a la izquierda, con otros datos, los que sea, pero que no afecten a la función "LOOKV".

      Si es lo segundo, entonces creo que sí tienes razón: la celda donde pones el "=LOOKV(...)" tiene que estar en una columna que esté más a la derecha que la columna donde tienes el rango.

      Dicho así, no sé si se entiende algo de lo que he escrito. ?( ¿Por qué no subes el Excel e intentamos ayudarte con el ejemplo directamente? ;)

      Un saludo.
      Peque
    • tiraxines
      tiraxines
      Bronce
      Registro: 08-05-2008 Artículos: 660
      el lookv entiendo es el buscarv así que mi número en este caso el 4 no aparece en el rango y daría error.


      es muy fácil hacerlo a mano pero me gustaría encontrar algo automático Ejemplo:

      Rango
      2
      5
      7
      9
      15
      ..

      siempre de menor a mayor


      mi números, el 4 y 8 por ejemplo:

      Entonces los "resultados" serían 5 y 9. Se entiende mejor ahora?
    • Peque09
      Peque09
      Bronce
      Registro: 02-28-2009 Artículos: 679
      original de tiraxines
      el lookv entiendo es el buscarv así que mi número en este caso el 4 no aparece en el rango y daría error.


      es muy fácil hacerlo a mano pero me gustaría encontrar algo automático Ejemplo:

      Rango
      2
      5
      7
      9
      15
      ..

      siempre de menor a mayor


      mi números, el 4 y 8 por ejemplo:

      Entonces los "resultados" serían 5 y 9. Se entiende mejor ahora?
      La función "buscarv" (que sí, supongo que es la misma que "lookv" que te decía yo) tiene un parámetro de control por ahí, que si lo pones en "true" te busca coincidencia exacta y te daría error. Pero si ese mismo parámetro lo pones en "false" (no sé si las palabras son ésas o hay que poner "exact" o lo que sea) y la columna de datos está ordenada de menor a mayor, te busca el valor inmediatamente superior: esto es, lo que tú querías precisamente.

      Voy a cenar algo. Ahora en un rato vuelvo, intento hacer un Excel sencillo que resuelva eso mismo y te lo paso. Que me cuesta mucho explicarlo con texto.

      Un saludo.
      Peque
    • tiraxines
      tiraxines
      Bronce
      Registro: 08-05-2008 Artículos: 660
      poniendo verdadero me sale el aproximado por debajo

      no hay ninguna manera de que salga el aproximado por arriba?
    • Peque09
      Peque09
      Bronce
      Registro: 02-28-2009 Artículos: 679
      original de tiraxines
      poniendo verdadero me sale el aproximado por debajo

      no hay ninguna manera de que salga el aproximado por arriba?
      Bueno, algo hemos progresado... jejeje...

      Podrías crear 2 columnas. En la primera colocas tu rango y en la segunda tu rango "desfasado". Siguiendo con tu ejemplo de 2,5,7,9,15:

      col.1 ---------- col.2
      0 . . . . . . . . . . . 2
      2 . . . . . . . . . . . 5
      5 . . . . . . . . . . . 7
      7 . . . . . . . . . . . 9
      9 . . . . . . . . . . . 15
      15 . . . . . . . . . . error

      Así, puedes aplicar el "VLOOKUP" (o "BUSCARV" o como se llamase en español) en la matriz formada por esas dos columnas: en la primera buscas el resultado aproximado, que te dará el mayor de los menores, pero le pides que el resultado sea el de la segunda columna que, como está "desfasada", te devolverá el menor de los mayores.

      ¿He conseguido explicarme?
      :fdrink

      Un saludo.
      Peque
    • Peque09
      Peque09
      Bronce
      Registro: 02-28-2009 Artículos: 679
      Me respondo a mí mismo. He sacado una pequeña imagen:



      Explicación:

      Las celdas en verde son las que hay que "tocar". Las celdas en gris sólo llevan fórmulas y las escribimos una vez. Luego se dejan como están.

      + primera columna: los datos de tu rango, con un "0" en la casilla A1 para completar.

      + segunda columna. Fórmula: en B1 pones "=A2", y arrastras para copiar la fórmula todas las celdas hasta llegar abajo del todo, de modo que:
      B1=A2
      B2=A3
      B3=A4
      ... etc.

      + tercera columna: el valor buscado. Ahí puse el 8.

      + última columna. Fórmula: literalmente, "=BUSCARV(C1;A1:B6;2)". El "VERDADERO" que falta al final se puede omitir.

      Como ves, esto arroja el resultado que tú buscabas. Si quieres cambiar el rango, cambias la primera columna y arrastras la fórmula de la segunda columna todo lo abajo que necesites. Luego cambias la matriz de búsqueda de la fórmula de "BUSCARV" (tendrás que cambiar ese "A1:B6" por los valores que corresponda) y listo.

      Ya sólo tienes que meter el valor buscado en la casilla C1 y, en D1, tienes el resultado que buscas. No sé si se podrá hacer de una forma más "óptima", pero es todo lo que se me ocurre. Si pasa algún profesional del Excel, tal vez pueda aconsejarte algo mejor.
      :fdrink

      Un saludo.
      Peque
    • tiraxines
      tiraxines
      Bronce
      Registro: 08-05-2008 Artículos: 660
      No es lo que buscaba pero me has dado una idea que sí me ayuda


      muchas gracias
    • andresxaw
      andresxaw
      Bronce
      Registro: 10-08-2009 Artículos: 146
      También podría servirte de esta forma, copias la primera formula y la arrastras hasta donde se acaba el rango, sin embargo miraré otra forma en la que no halla que incluir una nueva columna.


    • andresxaw
      andresxaw
      Bronce
      Registro: 10-08-2009 Artículos: 146
      Suponiendo que tu rango es A2:A6, que el número que buscas esta en B2 esta formula te sirve, pero los números tienen que estar organizados de mayor a menor, eso lo puedes hacer en la pestaña inicio.

      Si tienes excel 2007 creo que no es consultav sino buscarv, este ejemplo lo hice en excel 2010.

      =SI(B2>=A2;"";SI(ESNUMERO(CONSULTAV(B2;A2:A6;1;FALSO))=VERDADERO;INDICE(A2:A6;COINCIDIR(B2;A2:A6;-1)-1);INDICE(A2:A6;COINCIDIR(B2;A2:A6;-1))))

      Tal vez me complique para dejarlo en una sola celda pero es la única forma con la que di, además que no soy experto en esto.
    • Peque09
      Peque09
      Bronce
      Registro: 02-28-2009 Artículos: 679
      original de tiraxines
      No es lo que buscaba pero me has dado una idea que sí me ayuda
      Me alegro. ¡Algo es algo!
      :D
    • rangerx69x
      rangerx69x
      Bronce
      Registro: 09-13-2010 Artículos: 3.453
      No se si ya tengas la respuesta, pero si no me gustaria ayudar en lo que pueda, solo que necesito entender bien el problema.

      Se supone que tu pones algunos numeros en la columna A ej:

      Col A
      7
      4
      9
      3
      8

      Cuantos numeros serian?

      Despues tu en otra columna escribes otro numero el cual sera para buscar el numero menor a este ej:

      Col B
      5

      Despues en col C escribir la respuesta que seria

      Col C
      4

      No se si es lo que estas buscando?

      Si es asi dime para ayudar
    • tiraxines
      tiraxines
      Bronce
      Registro: 08-05-2008 Artículos: 660
      original de andresxaw
      También podría servirte de esta forma, copias la primera formula y la arrastras hasta donde se acaba el rango, sin embargo miraré otra forma en la que no halla que incluir una nueva columna.



      esa fórmula ya la probé pero hay un pequeño problemilla :p

      el rango suele tener más de 10k filas y los números a encontrar no bajan nunca de 100 así que hay que poner mucha fórmula y el excel "pesa" muchísimo y así no es eficiente pq este es el primer paso que hay que hacer de varios...


      pero con lo primero que dijiste me vale!!! sólo hay que poner el doble de fórmulas que números a buscar y eso hace muy ligerito el excel así que PERFECT
    • Peque09
      Peque09
      Bronce
      Registro: 02-28-2009 Artículos: 679
      original de tiraxines
      ... el rango suele tener más de 10k filas y los números a encontrar no bajan nunca de 100...
      Una cosa... No sé si has elegido el Excel porque sí o es que tienes que hacerlo obligatoriamente en Excel pero, si andas un poco suelto con esos temas, para una cosa así de grande (10000 filas en Excel, para mí, siempre pesa demasiado) ¿no tardas menos programando en cualquier lenguaje? C, Fortran, incluso MatLab... yo qué sé...