Resumen —
ANDyORtoman varias pruebasTRUE/FALSEy devuelven un veredicto.AND(…)esTRUEsolo cuando todas las pruebas pasan;OR(…)esTRUEcuando al menos una lo hace. No deciden nada por sí mismos — su trabajo es alimentar el primer argumento de unIF, una regla de formato condicional o un filtro. Ponlos dentro de la prueba, no alrededor de IF separados:=IF(AND(B2>=60, C2="Yes"), "Pass", "Fail"). Dos cosas muerden: un=AND(...)suelto en una celda solo imprime la palabraTRUE, y Excel no hace cortocircuito — evalúa todos los argumentos, así queAND(A2<>0, B2/A2>1)aún puede lanzar#DIV/0!. Funciona en todas las versiones.
=IF(AND(B2>=60, C2="Yes"), "Pass", "Fail") ' ambas deben ser verdaderas
=IF(OR(B2>=90, C2="VIP"), "Priority", "Normal") ' con cualquiera basta
AND y OR parecen las funciones más básicas de Excel, y en aislamiento lo son.
Pero casi todos los bugs reales con ellas vienen de un único malentendido: la
gente las trata como si tomaran una decisión, cuando lo único que hacen es
contar votos y devolver una respuesta. Acierta ese modelo mental y la
anidación, el TRUE perdido y el sorpresivo #DIV/0! dejan de ocurrir.
Nota: en una interfaz de Excel en español, AND se llama Y y OR se llama O. Relacionadas: IF = SI, IFERROR = SI.ERROR, EXACT = IGUAL, SUMPRODUCT = SUMAPRODUCTO, SUMIFS = SUMAR.SI.CONJUNTO, FILTER = FILTRAR. Las fórmulas siguientes usan los nombres en inglés — el comportamiento es el mismo. En Excel en español los errores aparecen como: #N/A, #REF!, #¿NOMBRE?, #¡VALOR!, #¡DIV/0!.
Lo que aprenderás
- El modelo mental:
AND/ORson contadores de votos, no decisores - Por qué van dentro del primer argumento de
IF, no envolviendo IF anidados - Cuál significa «entre» y cuál «cualquiera» — y por qué la gente los intercambia
- La sorpresa de la fórmula suelta: una celda que solo dice
TRUE - La trampa del programador: Excel no hace cortocircuito, así que aún puede fallar
- El poder de matriz — probar una columna entera — y adónde
AND/ORno llegan
El modelo mental: un contador de votos, no un decisor
Imagina AND y OR como un recuento de manos alzadas. Cada argumento es un
votante que levanta la mano por TRUE o la mantiene baja por FALSE. AND
informa «¿unánime?» — TRUE solo si nadie dejó la mano baja. OR informa
«¿alguien?» — TRUE si al menos una mano se levantó.
=AND(B2>=60, C2="Yes", D2<100) ' TRUE solo si las tres pasan
=OR(B2>=90, C2="VIP") ' TRUE si cualquiera pasa
Esa es toda la función. Toma una sala llena de condiciones y las reduce a un
TRUE/FALSE. No elige un resultado, ni muestra una etiqueta, ni ejecuta una
acción — entrega su único veredicto a quien lo pidió. Sostén esa imagen y la
siguiente regla se vuelve obvia: si AND/OR solo producen un veredicto, algo
más tiene que usarlo.
La regla nº1: viven dentro de la prueba de IF, no alrededor
La forma más común que la gente busca es una torre de IF anidados, cuando lo que
de verdad necesitaba era un AND dentro de un único IF:
' La pirámide anidada — funciona, pero cuesta más leerla y editarla
=IF(B2>=60, IF(C2="Yes", "Pass", "Fail"), "Fail")
' AND dentro de la prueba — un cruce limpio
=IF(AND(B2>=60, C2="Yes"), "Pass", "Fail")
Ambas dan la misma respuesta, pero la segunda dice exactamente lo que quieres
decir — «ambas deben ser verdaderas para aprobar» — en una línea legible. Esta es
la división del trabajo que importa: AND/OR calculan la condición;
IF calcula el resultado. Cada vez que te
descubras anidando un IF solo porque tienes «dos cosas que deben ser ambas
verdaderas», no necesitas un IF más grande — necesitas un AND en su primer
argumento. La misma prueba combinada cae directamente en una regla de
formato condicional o en el criterio de un
FILTER, sin IF de por medio.
«Entre» es AND; «cualquiera» es OR (el que la gente intercambia)
El error de lógica más frecuente es echar mano del conector equivocado en una
prueba de rango. «¿Está el valor entre 10 y 20?» son dos condiciones que
deben cumplirse ambas — eso es AND, no OR:
=IF(AND(A2>=10, A2<=20), "In range", "Out") ' BIEN — entre
=IF(OR(A2>=10, A2<=20), "In range", "Out") ' MAL — siempre TRUE
La versión con OR es siempre TRUE: todo número es o bien ≥10 o bien ≤20 (la
mayoría son ambas cosas). Reserva OR para «pertenece a cualquiera de estos
grupos» — OR(Region="EU", Region="UK") — donde las condiciones son
alternativas genuinas. Una comprobación rápida de cordura: si tus dos pruebas
apuntan en direcciones opuestas sobre el mismo valor, casi con seguridad
quieres AND.
La sorpresa de la fórmula suelta: una celda que solo dice TRUE
Escribe =AND(B2>=60, C2="Yes") en una celda por sí sola y Excel hace
exactamente lo que la función promete — te muestra el veredicto, la palabra
literal TRUE o FALSE:
=AND(B2>=60, C2="Yes") ' la celda muestra TRUE (o FALSE)
Eso no es un bug; es la función funcionando según el diseño. Es una señal de que
olvidaste el paso de la decisión. Un TRUE crudo en una columna de resultados
casi siempre significa «quería envolver esto en un IF (o una regla) y no lo
hice». El arreglo no es cambiar AND — es darle a su veredicto un consumidor.
La trampa del programador: Excel no hace cortocircuito
Si vienes de VBA, Python o C, esperas que AND se detenga en el primer FALSE —
A2<>0 AND B2/A2>1 nunca debería dividir cuando A2 es 0. Excel no funciona
así. AND y OR evalúan todos los argumentos antes de combinarlos, así
que la división aún se ejecuta y aún da error:
=IF(AND(A2<>0, B2/A2>1), "OK", "No") ' A2=0 -> aún calcula B2/0 -> #DIV/0!
Aquí no hay guarda tipo AndAlso/&&. Para proteger un cálculo arriesgado debes
anidar — pon la guarda en un IF exterior para que la parte peligrosa nunca se
alcance:
=IF(A2=0, "No", IF(B2/A2>1, "OK", "No")) ' A2=0 hace cortocircuito antes de dividir
Este es el único caso en el que anidar es correcto y AND es incorrecto. Si
cualquier argumento puede dar error cuando otro es falso, AND/OR no pueden
protegerte — un IF exterior (o un envoltorio IFERROR
como último recurso) sí.
El poder de matriz — y el muro con el que chocan AND/OR
Ambas funciones aceptan rangos, y AND(A2:A100>0) prueba si la columna entera
es positiva de un solo golpe — un movimiento genuinamente útil e infrautilizado
para una única comprobación de «¿es todo válido?» que derrama en el Excel
moderno.
Pero aquí es también donde su naturaleza muerde. Como AND/OR colapsan todo a
un veredicto, no puedes usarlos para construir una máscara por fila. Esto
parece razonable y está mal:
=SUMPRODUCT((Region="EU") * AND(Amount>0)) ' MAL — AND aplasta la matriz a un valor
Cuando necesitas un TRUE/FALSE por cada fila — el motor detrás de
SUMPRODUCT,
SUMIFS y
FILTER — dejas AND/OR y usas aritmética
sobre las matrices booleanas: * para AND, + para OR.
=SUMPRODUCT((Region="EU") * (Amount>0), Amount) ' * = AND fila a fila
=FILTER(Data, (Region="EU") + (Region="UK")) ' + = OR fila a fila
La regla práctica: AND/OR cuando quieres una respuesta sobre un conjunto
de condiciones; */+ cuando quieres una respuesta por fila. Confundir las
dos es la raíz de la mitad de las preguntas de «mi fórmula de matriz devuelve un
solo número».
La sorpresa de mayúsculas y minúsculas, igual que en IF
Las comparaciones dentro de AND/OR usan el = habitual de Excel, que
ignora mayúsculas y minúsculas — C2="yes" coincide con "Yes", "YES" y
"yes" por igual. Suele ser útil; a veces no. Para una prueba que distinga
mayúsculas (comparar un código como ID frente a id) envuelve la comparación
en EXACT:
=IF(AND(EXACT(C2,"Yes"), B2>=60), "Pass", "Fail") ' solo "Yes", no "yes"
El criterio: AND/OR, IF anidado o máscaras +/*
Tres formas, una decisión:
AND/ORdentro de un IF — el valor por defecto para «N condiciones, un resultado». Legible, editable, correcto para casi todo.- IF anidado — solo cuando una prueba posterior puede dar error si una anterior es falsa (el caso del cortocircuito), o cuando las ramas hacen preguntas genuinamente distintas.
+/*sobre matrices booleanas — cuando necesitas un veredicto por fila para alimentarSUMPRODUCT,SUMIFS,FILTERo un resultado derramado.
La habilidad no está en memorizar las funciones — está en reconocer, por la forma del problema, cuál de estas tres tienes en realidad entre manos.
Cómo ayuda ExcelMaster
Las reglas de negocio llegan como frases — marca cualquier pedido de la UE o
Reino Unido de más de 1.000 $ que no esté ya aprobado — una mezcla de AND y OR
fácil de conectar al revés. ExcelMaster convierte esa frase en la estructura
correcta: un AND/OR dentro de un IF cuando quieres una sola marca, o una
máscara de matriz */+ cuando la misma lógica tiene que impulsar un SUMIFS o
un FILTER. Tú describes la condición en términos llanos; él elige la forma que
no devolverá en silencio «siempre TRUE» ni un #DIV/0! perdido.
Preguntas frecuentes
¿Cuál es la diferencia entre AND y OR en Excel?
AND devuelve TRUE solo cuando todas las condiciones son verdaderas; OR
devuelve TRUE cuando al menos una lo es. Usa AND para «todas estas deben
cumplirse» (incluido «entre X e Y») y OR para «cualquiera de estas basta».
¿Cómo uso AND con IF en Excel?
Pon AND en el primer argumento de IF:
=IF(AND(B2>=60, C2="Yes"), "Pass", "Fail"). AND produce un único veredicto
TRUE/FALSE e IF lo convierte en tus dos resultados. No anides un IF
separado por cada condición.
¿Por qué mi fórmula AND solo muestra TRUE o FALSE?
Porque eso es todo lo que AND devuelve — un veredicto. Olvidaste envolverlo en
algo que actúe sobre él. Ponlo dentro de un IF (=IF(AND(...), "Yes", "No")) o
úsalo como regla de formato condicional o de validación de datos.
¿La función AND de Excel hace cortocircuito como otros lenguajes?
No. Excel evalúa todos los argumentos, así que AND(A2<>0, B2/A2>1) aún
divide entre A2 incluso cuando A2 es 0, produciendo #DIV/0!. Para
proteger un cálculo arriesgado, anídalo dentro de un IF exterior en vez de
confiar en AND.
¿Cómo combino AND y OR para una condición por fila?
Dentro de IF puedes anidarlos — AND(x, OR(y, z)). Pero cuando necesitas un
resultado para cada fila (para SUMPRODUCT, SUMIFS o FILTER), usa
aritmética sobre las matrices booleanas: * para AND y + para OR, por ejemplo
(Region="EU") * (Amount>0).
Probado en
Probado en: Excel 365 (Windows 11) — última verificación: 04/07/2026.
Guías relacionadas: Excel IF · Excel IFS y SWITCH · Excel IFERROR · Excel SUMPRODUCT · Excel FILTER
