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

Función CAMBIAR (SWITCH) de Excel — Sustituye los SI anidados por una fórmula plana y legible

|

Función CAMBIAR (SWITCH) de Excel — Sustituye los SI anidados por una fórmula plana y legible

ResumenCAMBIAR(expresión; valor1; resultado1; valor2; resultado2; …; [default]) evalúa expresión una sola vez, recorre los pares valor/resultado de izquierda a derecha y devuelve el resultado de la primera coincidencia exacta. Es la forma limpia de convertir una entrada en una de varias salidas — el reemplazo plano de una torre de SI anidados. La única regla que lo gobierna todo: CAMBIAR compara por igualdad exacta, nunca por > o <.

=CAMBIAR(A2; "N"; "North"; "S"; "South"; "E"; "East"; "W"; "West"; "Unknown")
=CAMBIAR(DIASEM(A2); 1; "Weekend"; 7; "Weekend"; "Weekday")
=CAMBIAR(B2; 1; "Gold"; 2; "Silver"; 3; "Bronze")          ' sin default -> #N/D si no hay coincidencia

Si alguna vez escribiste =SI(A2="N";"North";SI(A2="S";"South";SI(A2="E";…))) y perdiste la cuenta de los paréntesis de cierre, CAMBIAR es la función que querías. Se lee de arriba abajo como una tabla, y añadir un caso nuevo es un par más — no un nivel más de anidación.

Nota: en la interfaz de Excel en español esta función se llama CAMBIAR, y los códigos de error aparecen como #N/D (no #N/A) y #¡VALOR!. Funciones relacionadas: SI (IF), SI.CONJUNTO (IFS), SI.ERROR (IFERROR), DIASEM (WEEKDAY), VERDADERO (TRUE), BUSCARV (VLOOKUP). Los ejemplos de esta guía ya usan los nombres en español; el comportamiento es idéntico al inglés.

Lo que aprenderás

  • El modelo mental: una tabla de enrutamiento en línea indexada por valores exactos
  • Por qué CAMBIAR solo hace igualdad exacta — la frontera entre ella y SI.CONJUNTO
  • El argumento default, y el #N/D que obtienes cuando lo olvidas
  • El truco CAMBIAR(VERDADERO(); …) para rangos — y por qué es un compromiso
  • CAMBIAR vs SI.CONJUNTO vs SI anidado: una regla de decisión que puedes aplicar de verdad

El modelo mental: una tabla de enrutamiento en línea

Piensa en CAMBIAR como una pequeña tabla de búsqueda que escribes directamente dentro de la fórmula. Le entregas un valor que buscar (la expresión) y luego una serie de pares caso → resultado. Excel evalúa la expresión una sola vez y te devuelve el resultado que está junto al primer caso con el que coincide:

=CAMBIAR(status; "A"; "Active"; "P"; "Pending"; "C"; "Closed"; "Unknown status")
'        ▲ busca esto          ▲ si es igual a "A", devuelve "Active" … etc.

Todo lo bueno de CAMBIAR sale de esta imagen. Es plana — los casos van uno al lado del otro, no anidados unos dentro de otros, así que diez casos se leen tan fácil como dos. Evalúa la expresión una vez, así que CAMBIAR(AlgunaFórmulaLenta(); …) no recalcula esa fórmula en cada rama como sí vuelve a probar una cadena de SI anidados. Y la intención es obvia de un vistazo: esta fórmula asigna una cosa a un conjunto fijo de resultados.

La única regla que define a CAMBIAR: la igualdad exacta

Este es el hecho que explica cada pregunta de «CAMBIAR no funciona»: CAMBIAR compara la expresión con cada caso usando igualdad simple — la misma que =. No hay operador, ni rango, ni «mayor que». Un caso es igual a la expresión o no lo es.

Así que esto no hace lo que un principiante espera:

=CAMBIAR(score; ">90"; "A"; ">80"; "B"; "F")     ' MAL — nunca coincide

CAMBIAR compara score con el texto ">90", con el que un número nunca es igual, así que siempre caes en "F". Los rangos sencillamente no son para lo que sirve CAMBIAR. En cuanto tus ramas son condiciones (score >= 90, importe entre X e Y) en lugar de valores exactos, has llegado al límite de CAMBIAR — eso es territorio de SI.CONJUNTO. Mantén la división clara en tu cabeza:

  • Una expresión comparada con una lista de valores exactos → CAMBIAR
  • Una lista de condiciones independientes (incluidos rangos) → SI.CONJUNTO

El argumento default y la trampa del #N/D

CAMBIAR admite un último argumento opcional sin valor emparejado — el default, que se devuelve cuando nada coincidió:

=CAMBIAR(grade; "A"; 4,0; "B"; 3,0; "C"; 2,0; 0)     ' 0 es el default

Cómo leer la lista de argumentos: los pares son valor; resultado; si hay un argumento impar suelto al final, ese es el default. Omítelo y una expresión sin coincidencia devuelve #N/D, no un blanco:

=CAMBIAR(B2; 1; "Gold"; 2; "Silver"; 3; "Bronze")    ' B2 = 4  ->  #N/D

Este es el error más común de CAMBIAR con diferencia: los datos reales siempre contienen el valor que no planeaste, y sin un default aflora como #N/D esparcido por toda la columna. Convierte el default en un hábito — aunque sea solo "Other" o 0 — para que las entradas inesperadas caigan donde tú elegiste en lugar de dar error.

El truco CAMBIAR(VERDADERO()) — ingenioso, pero sopésalo

Hay una forma conocida de hacer que CAMBIAR maneje rangos: pon la expresión en VERDADERO() y haz que cada caso sea una condición que devuelve VERDADERO o FALSO. Entonces CAMBIAR devuelve el resultado del primer caso que se evalúe como VERDADERO:

=CAMBIAR(VERDADERO();
         score>=90; "A";
         score>=80; "B";
         score>=70; "C";
         "F")

Funciona porque score>=90 se evalúa como VERDADERO/FALSO, y CAMBIAR busca el primer caso igual a VERDADERO(). Es realmente útil y depende del orden (gana la primera coincidencia, así que ordena de lo más estricto a lo más laxo, exactamente como un SI.CONJUNTO por tramos).

Pero sé honesto con el compromiso: estás usando un comparador de igualdad para fingir lógica de rangos, y la siguiente persona tiene que descifrar por qué la expresión es VERDADERO(). Cuando las ramas son rangos, SI.CONJUNTO dice lo mismo de forma más directa. Echa mano de CAMBIAR(VERDADERO()) cuando ya estás metido en un CAMBIAR y quieres un solo caso con rango; prefiere SI.CONJUNTO cuando toda la fórmula son rangos.

CAMBIAR vs SI.CONJUNTO vs SI anidado

Las tres eligen un resultado de entre varios, así que cuál usar no es cuestión de capacidad — es cuestión de cuál expresa tu intención con más claridad:

' SI anidado — funciona, pero los paréntesis se apilan y la intención queda enterrada
=SI(A2="N";"North";SI(A2="S";"South";SI(A2="E";"East";"Other")))

' CAMBIAR — una expresión, casos de valor exacto, plano
=CAMBIAR(A2; "N";"North"; "S";"South"; "E";"East"; "Other")

' SI.CONJUNTO — condiciones independientes, sobre todo rangos
=SI.CONJUNTO(A2>=90;"A"; A2>=80;"B"; A2>=70;"C"; VERDADERO;"F")

La regla de decisión:

  • ¿Comparas una cosa con un conjunto de valores exactos? CAMBIAR. Es la más legible y evalúa la expresión una sola vez.
  • ¿Pruebas condiciones independientes o rangos? SI.CONJUNTO.
  • ¿Sigues escribiendo tres o más niveles de SI anidado? Ese es el mal olor — una de las dos anteriores se leerá mejor y se romperá menos cuando la edites dentro de seis meses.

Una advertencia que conviene decir claro: CAMBIAR llegó con Excel 2019 y Microsoft 365. En Excel 2016 o anteriores no existe, y vuelves al SI anidado o a una tabla de búsqueda con BUSCARV / INDICE y COINCIDIR.

El criterio

CAMBIAR se gana su lugar haciendo visible la intención. Cuando el trabajo de una fórmula es «asignar este único valor a uno de estos resultados», CAMBIAR dice exactamente eso — plano, ordenado, fácil de ampliar. Su estrechez (solo igualdad exacta) no es una debilidad; es la señal que te avisa de que has elegido la herramienta equivocada. Si estás metiendo cadenas ">90" en los casos o anidando CAMBIAR(VERDADERO()) cinco niveles, la fórmula te está diciendo que quería SI.CONJUNTO. Y si la lista de casos es larga, estable y de todos modos vive en tus datos — regiones, códigos de producto, etiquetas de estado — la respuesta más mantenible no es CAMBIAR ni SI.CONJUNTO; es una tabla de búsqueda de verdad que puedes editar sin tocar la fórmula. Ajusta la herramienta a la forma de la decisión y la fórmula se lee sola.

Cómo ayuda ExcelMaster

La mayoría de los problemas con CAMBIAR no son de sintaxis — son elegir CAMBIAR cuando las ramas son rangos, u olvidar el default hasta que aparece #N/D. ExcelMaster elige la estructura correcta por ti: usa CAMBIAR para el mapeo de valores exactos, te lleva a SI.CONJUNTO en cuanto tus ramas pasan a ser rangos, siempre aporta un default sensato y sugiere una tabla de búsqueda cuando tus casos son en realidad datos. Dile «etiqueta cada fila con North/South/East/West según el código de A» o «califica estas notas», y escribe una fórmula plana, completa y aún legible cuando la reabras el próximo trimestre.

Preguntas frecuentes

¿Cómo funciona la función CAMBIAR en Excel?

=CAMBIAR(expresión; valor1; resultado1; valor2; resultado2; …; [default]) evalúa expresión una vez, la compara con cada valor en orden usando igualdad exacta y devuelve el resultado que coincide. Si nada coincide, devuelve el default opcional, o #N/D si no proporcionaste uno.

¿Cuál es la diferencia entre CAMBIAR y SI.CONJUNTO?

CAMBIAR compara una expresión con una lista de valores exactos — ideal para asignar un código o etiqueta a un resultado. SI.CONJUNTO evalúa una lista de condiciones independientes, incluidos rangos como score>=90. Usa CAMBIAR para coincidencias exactas y SI.CONJUNTO para condiciones.

¿Cómo añado un valor por defecto en CAMBIAR?

Pon un único argumento extra al final del todo, sin un valor emparejado: =CAMBIAR(A2;"N";"North";"S";"South";"Unknown"). Aquí se devuelve "Unknown" siempre que A2 no sea "N" ni "S". Sin él, una expresión sin coincidencia devuelve #N/D.

¿Puede CAMBIAR manejar «mayor que» o rangos?

No directamente — solo prueba igualdad exacta. El apaño es CAMBIAR(VERDADERO(); condición1; resultado1; …), donde cada condición devuelve VERDADERO/FALSO. Para lógica de rangos en toda la fórmula, SI.CONJUNTO suele ser más claro.

¿Está disponible CAMBIAR en Excel 2016?

No. CAMBIAR se introdujo en Excel 2019 y está en Microsoft 365. En Excel 2016 y anteriores, usa SI anidado o una tabla de búsqueda con BUSCARV.

Probado en

Probado en: Excel 365 (Windows 11) — última verificación el 08/07/2026.

Guías relacionadas: Excel SI.CONJUNTO · Excel SI · Excel ELEGIR · INDICE y COINCIDIR