🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

Funciones AND y OR en Excel — Combina condiciones bien (y por qué Excel nunca hace cortocircuito)

|

Funciones AND y OR en Excel — Combina condiciones bien (y por qué Excel nunca hace cortocircuito)

ResumenAND y OR toman varias pruebas TRUE/FALSE y devuelven un veredicto. AND(…) es TRUE solo cuando todas las pruebas pasan; OR(…) es TRUE cuando al menos una lo hace. No deciden nada por sí mismos — su trabajo es alimentar el primer argumento de un IF, 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 palabra TRUE, y Excel no hace cortocircuito — evalúa todos los argumentos, así que AND(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/OR son 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/OR no 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 FALSEA2<>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úsculasC2="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/OR dentro 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 alimentar SUMPRODUCT, SUMIFS, FILTER o 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