viernes, junio 01, 2007

Determinar si un valor existe en un rango de Excel

La forma más práctica de determinar si un valor (numérico o texto) existe en una hoja de Excel es usar el menú Edición—Buscar (o el atajo Ctrl+B). Si queremos limitar la búsqueda a un rango determinado en la hoja, lo que haremos es seleccionar primero el rango y luego efectuar la búsqueda.


También podemos usar fórmulas para determinar si un valor existe en un rango. Por ejemplo, en una celda ponemos el valor que buscamos y en otra celda ponemos una fórmula que de cómo resultado FALSO (si no existe) o VERDADERO (si existe).


Para efectuar la búsqueda en una matriz (un rango que comprende más de una columna) podemos usar esta fórmula matricial: {=O((B2:E7)=C9)}





Como con toda fórmula matricial, al introducirla en la celda apretamos Ctrl+Mayusculas+Enter.

Esta fórmula matricial funciona de la siguiente manera:

# la expresión {((B2:E7)=C9)} genera una matriz de resultados "VERDADERO" o "FALSO"

# esta matriz es evaluada por la función O. Esta función evalúa todos los resultados de la matriz y da como resultado VERDADERO si alguno de los elementos de la matriz es VERDADERO (sólo dará FALSO si todos los elementos son FALSO).

Pero, cómo hacemos una búsqueda exacta? Por ejemplo, en la celda D6 aparece el texto Xx, donde la primera X está en mayúsculas. La fórmula que hemos usado hasta ahora da VERDADERO también con Xx y con xx.


Para lograr una búsqueda exacta usamos la función IGUAL, en la siguiente fórmula matricial: {=O(IGUAL(B2:E7,C9))}




Technorati Tags:

11 comentarios:

  1. Interesante. Gracias !!!

    ResponderBorrar
  2. He corregido la nota ya que en la primera versión había un error muy serio.

    ResponderBorrar
  3. Los gráficos de dispersión en Excel permiten agregar un eje X secundario. Para agregar un tercer eje o más lo único que se me ocurre sería sobreponer dos o más gráficos. Esto supone bastante trabajo manual.
    En esta nota de mi blog sobre gráficos y presentación de datos muestro una aplicación de esta técnica.

    ResponderBorrar
  4. =CONTAR.SI(G10:L24;"l")>1

    ResponderBorrar
  5. Jorge:
    Agradezco como muchos la información que entregas en esta página.
    Quisiera preguntar algo y saber si me puedes ayudar, no estoy seguro si es posible realizar esta operación y de que forma.
    Necesito “obligar” el ingreso de ciertos valores en el caso que el valor de una celda sea “X”, el problema es que ese valor lo elijo desde una “Lista de Validación”, puedo hacer que se levante un macro si cambia el valor de una celda utilizando “Target” o celda activa, pero si se elige desde una Lista no se activa la macro, he realizado algunas pruebas desde el editor de VBA con Calculate y Change, pero no logro lo que quiero, o mejor dicho no conozco tanto como quisiera a Excel.
    No me basta solo con “validar” que los datos sean los de una lista, necesito “obligar” que ingrese datos en la celda continua, si selecciona cierta opción de la lista.
    De antemano, muchas gracias.
    Atte,
    PedroBarreda@gmail.com

    ResponderBorrar
  6. Hola, me parece que tendrías que basarte sólo en macros (eventos). De esa manera no tendría que haber ningún problema. Como tu pregunta no está dentro del tema de la nota, te sugiero que me mandes un ejemplo de lo que quieres hacer en forma privada (jorgedun@gmail.com)

    ResponderBorrar
  7. Buenas, es muy útil e interesante el blog estoy sacando muy buena info de el.

    Ahora bien, no encuentro una respuesta a un problema que tengo, intento hacer lo siguiente mediante macro:

    En un rango de celdas buscar un valor en texto la celda contigua insertar otro valor y asi sucesivamente, eso lo tengo solucionado con lo siguiente (soy muy nuevo en macros...):
    'busco el la celda con el valor "S"

    Cells.Find(What:="S", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
    xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
    , SearchFormat:=False).Activate

    'selecciono la celda contigua
    Selection.Offset(0, 1).Select
    'inserto el valor que quiero
    ActiveCell.FormulaR1C1 = "R"


    Pero si cambio el "Cells.Find" por "selection.find"(despues de añadir el rango correspondiente) ya no funciona ya que deja seleccionado el rango.

    Agradecería mucho un poco de luz sobre esto porque no encuentro una formula o metodo valido ni con buscarv buscarh ni nada similar....

    Un Saludo

    ResponderBorrar
  8. Te sugiero que me envíes el archivo con una descripción más precisa de lo que quieres hacer con la macro

    ResponderBorrar
  9. Bueno gracias por el interes, finalmente pude resolverlo por mi mismo (que gusto da decir eso xD) lo que estaba intentando era esto:
    CODIGO:
    __________________________________________
    range("C6:AH19").Find(What:="S", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
    xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
    , SearchFormat:=False).Activate

    _____________________________________________

    De todos modos resuelto este problemilla tengo otros así que te enviare el archivo con una descripción mas precisa como me dices para ver si me puedes dar alguna idea.

    Gracias!

    ResponderBorrar
  10. Hola, tengo una lista, y en otro rango me aparece (con fórmulas que hice) solo uno de los integrantes de dicha lista, quisiera saber cual de esos es. O sea del rango que tengo con fórmulas me puede aparecer en cualquier celda, son palabras que tengo en otra lista. Quisiera saber si puede ayudarme con esto, desde ya muchas gracias.

    ResponderBorrar
  11. Así como está planteado y sin ver el modelo nopuedo ayudarte. Fijate lo que pongo en el enlace Ayuda (en la parte superior del blog) y ponete en contacto conmigo por mail privado.

    ResponderBorrar

Nota: sólo los miembros de este blog pueden publicar comentarios.