Determinar si un valor existe en un rango de Excel

viernes, junio 01, 2007

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:

10 comments:

Anónimo,  02 junio, 2007 02:51  

Interesante. Gracias !!!

Jorge L. Dunkelman 02 junio, 2007 09:06  

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

DCh 03 junio, 2007 23:28  

Aunque mi comentario no pertenece a este hilo, me atrevo a hacerlo por acá...Tengo una duda sobre gráficos: cómo puedo hacer un gráfico de dispersión (XY)con más de dos ejes horizontales (tres o cuatro ejes secundarios)

Agradezco cualquier colaboración!!!!

Jorge L. Dunkelman 05 junio, 2007 22:55  

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.

xpelos,  14 junio, 2007 17:51  

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

Anónimo,  19 junio, 2007 20:17  

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

Jorge L. Dunkelman 19 junio, 2007 23:22  

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)

Anónimo,  21 agosto, 2008 14:48  

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

Jorge L. Dunkelman 21 agosto, 2008 22:10  

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

Anónimo,  24 agosto, 2008 14:15  

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!

Publicar un comentario

Google+ Followers

Seguidores

Google+ Badge

Términos Legales

  © Blogger template On The Road by Ourblogtemplates.com 2009

Back to TOP