Un número llega como número. El texto llega como lo que a la persona del otro lado le apeteció escribir.
GB-LDN-2291-A son cuatro campos haciéndose pasar por uno. DOE, john es un nombre en el orden equivocado y con las mayúsculas equivocadas. Replaced filter; order SO-88421 closed 04 Aug es una frase, y lo único que quieres de ella son los ocho caracteres del medio.
Las funciones de texto son la forma de recuperar los campos. Excel trae unas treinta y vas a usar nueve. Este artículo trata de esas nueve — cuál responde a qué pregunta, cuáles solo existen en Microsoft 365, y el puñado de trampas (un espacio que no es un espacio, un #¡VALOR! que significa "no encontrado", una división que aterriza en una fila a la que le falta un campo) que cuestan una tarde la primera vez que te las encuentras.
Nota de versión, léela primero.
TEXTOANTES,TEXTODESPUESyDIVIDIRTEXTOllegaron con Microsoft 365 en 2022 y también están en Excel 2024. No existen en Excel 2021, 2019 ni anteriores — obtendrás#¿NOMBRE?.UNIRCADENASyCONCATexisten desde Excel 2019.LETnecesita 2021 o 365. Todo lo de las secciones 2, 3, 7, 8 y 9 funciona en cualquier versión de este siglo. La sección 10 termina con una tabla de equivalentes clásicos, así que nada de aquí es inservible en una versión antigua — solo es más largo de escribir.
1) Todo Problema de Texto Es Una de Tres Preguntas
Antes de buscar una función, averigua qué estás preguntando en realidad. Solo hay tres preguntas, y cada una tiene su pequeño juego de herramientas.
| Pregunta | Funciones |
|---|---|
| ¿Dónde está? | ENCONTRAR, HALLAR, LARGO |
| ¿Cuánto quiero de ello? | IZQUIERDA, DERECHA, EXTRAE, TEXTOANTES, TEXTODESPUES, DIVIDIRTEXTO |
| ¿Qué forma necesita tener? | ESPACIOS, LIMPIAR, SUSTITUIR, REEMPLAZAR, NOMPROPIO/MAYUSC/MINUSC, UNIRCADENAS, TEXTO |
Casi todas las fórmulas de texto malas lo son porque responden a la segunda pregunta con herramientas de la primera — contando caracteres para encontrar un límite que un delimitador ya marca. Las secciones 2 y 4 son ese error y su solución.
Ocho Tickets de Servicio Técnico, Tal Como los Exportó el Sistema de Soporte
Aquí todas las columnas son texto, y todas esconden campos dentro. Etiqueta de Activo parece cuatro partes unidas por guiones hasta que llegas a T-1043 y T-1048, que solo tienen tres. Solicitante viene con el apellido primero y en las mayúsculas que tuviera el teclado del técnico, y T-1045 arrastra un espacio final que no se ve. Ruta del Sitio usa barras, salvo T-1044 que las rodea de espacios. Nota del Técnico es una frase con un número de pedido enterrado en algún punto — salvo T-1046, donde no hay ningún pedido. Encabezado en A1:E1, datos en A2:E9.
fxLas celdas con fórmulas están resaltadas en verde
Pasa el mouse sobre las celdas con fórmulas para ver la fórmula y resaltar las celdas referenciadas
2) IZQUIERDA, DERECHA y EXTRAE — Contar Caracteres, y Por Qué Se Rompe
Los tres extractores por posición, todos con índice desde 1:
=IZQUIERDA(texto; n)— los primerosncaracteres=DERECHA(texto; n)— los últimosncaracteres=EXTRAE(texto; inicio; n)—ncaracteres a partir de la posicióninicio
🎯 Escenario: Sacar el país, la ciudad y la revisión de la etiqueta de activo de la columna B.
=IZQUIERDA(B2; 2) → GB el código de país siempre tiene dos caracteres
=EXTRAE(B2; 4; 3) → LDN el de ciudad siempre tres, empezando en 4
=DERECHA(B2; 1) → A la letra de revisión siempre una... ¿o no?
Las dos primeras están bien. La tercera es el problema, y merece la pena ser preciso sobre el porqué.
Ejecuta =DERECHA(B4; 1) sobre T-1043, cuya etiqueta es GB-MAN-1150 sin letra de revisión. Devuelve 0 — el último dígito del número de unidad. Ni error, ni celda vacía. Un único carácter que parece exactamente un código de revisión válido, en una columna de códigos de revisión válidos, en un informe que nadie va a volver a revisar.
Ese es todo el argumento contra contar caracteres. Las fórmulas de posición no son frágiles porque se rompan; son frágiles porque no se rompen. Devuelven una respuesta equivocada y verosímil, y la dejan viajar.
Cuándo contar sí es correcto: cuando el campo tiene ancho fijo por especificación, no por casualidad. Un código ISO de país de 2 letras, un EAN de 13 dígitos, un IBAN, el año de una fecha ISO. En todos ellos, un valor con otra longitud es en sí mismo un error de datos que quieres detectar.
Una comprobación barata antes de fiarte de una posición: =MIN(LARGO(B2:B9)) y =MAX(LARGO(B2:B9)). Con estos datos devuelven 11 y 13, lo que te dice en una sola celda que la etiqueta no tiene ancho fijo y que cualquier DERECHA que escribas contra ella es una suposición.
3) ENCONTRAR y HALLAR — Localizar el Delimitador
Ambas devuelven la posición de una cadena dentro de otra. Se diferencian en tres cosas que importan:
ENCONTRAR | HALLAR | |
|---|---|---|
| Mayúsculas | Distingue | No distingue |
Comodines (? *) | No | Sí (~ escapa) |
| No encontrado | #¡VALOR! | #¡VALOR! |
Ambas admiten un tercer argumento opcional, núm_inicial, y es el que se olvida:
=ENCONTRAR("-"; B2) → 3 el primer guion
=ENCONTRAR("-"; B2; 4) → 7 el primer guion a partir de la posición 4
=HALLAR("so-"; E2) → 24 encuentra "SO-" pese a buscarlo en minúsculas
Ninguna devuelve 0 cuando el texto no está. Devuelven #¡VALOR!, lo que parece hostil hasta que caes en que es la única respuesta sensata — la posición cero no existe — y en que permite una prueba limpia:
=ESNUMERO(HALLAR("backorder"; E2)) → VERDADERO en T-1042, FALSO en el resto
=SI.ERROR(ENCONTRAR("-"; B2; 8); LARGO(B2)+1) → "el tercer guion, o justo pasado el final"
Ese segundo patrón — sustituir por una posición centinela cuando falta el delimitador — es como se hacían soportables las fórmulas de posición antes de 2022. Aquí está el clásico, extrayendo el número de unidad entre el segundo y el tercer guion:
=EXTRAE(B2;
ENCONTRAR("-"; B2; 4) + 1;
ENCONTRAR("-"; B2; ENCONTRAR("-"; B2; 4) + 1) - ENCONTRAR("-"; B2; 4) - 1)
Es correcta. También son tres ENCONTRAR anidados para decir "el trozo entre el segundo y el tercer guion", y aun así lanza #¡VALOR! en T-1043. Lee la siguiente sección y no vuelvas a escribirla nunca.
4) TEXTOANTES y TEXTODESPUES — Lo Que IZQUIERDA y DERECHA Deberían Haber Sido
TEXTOANTES(texto; delimitador; [núm_instancia]; [modo_coincidencia]; [coincidir_final]; [si_no_se_encuentra])
TEXTODESPUES(texto; delimitador; [núm_instancia]; [modo_coincidencia]; [coincidir_final]; [si_no_se_encuentra])
Seis argumentos, y los cuatro últimos son la razón por la que merece la pena aprenderlas en vez de tratarlas como "la versión fácil de IZQUIERDA":
núm_instancia— en qué aparición del delimitador cortar. En negativo cuenta desde el final:-1es la última.modo_coincidencia—0distingue mayúsculas (predeterminado),1no.coincidir_final—1trata el final del texto como delimitador. Este es el argumento que arregla los campos desiguales, y casi nadie lo usa.si_no_se_encuentra— qué devolver en lugar de#N/D. UnSI.ERRORincorporado a la función y que, a diferencia deSI.ERROR, no se traga además los errores que vengan de los argumentos.
🎯 Escenario: Dividir la etiqueta de activo en país, ciudad, unidad y revisión — de forma legible y sin romperse en T-1043.
País =TEXTOANTES(B2; "-") → GB
Ciudad =TEXTOANTES(TEXTODESPUES(B2;"-";1); "-"; 1; 0; 1) → LDN
Unidad =TEXTOANTES(TEXTODESPUES(B2;"-";2); "-"; 1; 0; 1) → 2291
Sigue la fórmula de ciudad en las dos formas. TEXTODESPUES(B2;"-";1) da LDN-2291-A en T-1041 y MAN-1150 en T-1043. TEXTOANTES(...; "-") corta entonces en el primer guion — lo cual funciona en la primera y lanzaría #N/D en la segunda, porque ya no queda ningún guion. Poner coincidir_final a 1 dice "si te quedas sin delimitadores, el final de la cadena cuenta como uno", y MAN-1150 devuelve MAN en lugar de un error. Un argumento, las dos formas, ningún SI.
La letra de revisión es otro problema: en T-1043 sencillamente no existe, así que no hay nada que un valor por defecto pueda devolver. TEXTODESPUES(B4; "-"; -1) da 1150 — la misma respuesta silenciosamente equivocada que DERECHA, alcanzada por un camino más elegante. Hay que contar los delimitadores:
=LARGO(B2) - LARGO(SUSTITUIR(B2; "-"; "")) → 3 en GB-LDN-2291-A, 2 en GB-MAN-1150
La longitud original, menos la longitud sin ningún guion, es el número de guiones. Es el truco más viejo del manual de funciones de texto y sigue siendo la forma más corta de preguntar "¿cuántos campos tiene realmente esta fila?". Protégete con él:
=SI(LARGO(B2)-LARGO(SUSTITUIR(B2;"-";""))=3; TEXTODESPUES(B2;"-";-1); "")
🎯 Escenario: Sacar el número de pedido de la nota libre del técnico, donde puede estar en cualquier punto de la frase o no estar.
Empieza por la versión ingenua y mírala fallar:
=TEXTODESPUES(E2; "SO-") → 88421 closed 04 Aug
Delimitador correcto, sin límite por la derecha. El número de pedido termina en un espacio en T-1041, en un punto y coma en T-1045 y en el final de la cadena en T-1042 — así que dale a TEXTOANTES los tres a la vez. El argumento del delimitador acepta una matriz, y esa es la característica que hace esto manejable:
=LET(
resto; TEXTODESPUES(E2; "SO-"; 1; 1; 0; "");
SI(resto = ""; "—"; "SO-" & TEXTOANTES(resto; {" "\";"\","\"."}; 1; 0; 1))
)
(Ojo con la sintaxis de matriz: en un Excel en español los elementos de una fila se separan con \, no con la coma que verías en las capturas en inglés.)
Leído: corta tras el primer SO-, sin distinguir mayúsculas (modo_coincidencia 1, para que un so- escrito con prisa siga coincidiendo), devolviendo cadena vacía en vez de #N/D cuando no hay pedido. Luego corta el resto en el primero de espacio, punto y coma, coma o punto, con coincidir_final 1 para que una nota que termine en el número también funcione. T-1046 no tiene pedido y devuelve una raya; el resto devuelve SO-88421 y compañía.
Fíjate en lo que esta fórmula no hace: no da por hecho que el número de pedido tenga cinco dígitos. Escribir IZQUIERDA(resto; 5) funcionaría en las ocho filas de aquí y se rompería la primera vez que administración pase a seis.
5) DIVIDIRTEXTO — Una Fórmula, Todos los Campos de Golpe
DIVIDIRTEXTO(texto; delim_col; [delim_fila]; [ignorar_vacío]; [modo_coincidencia]; [rellenar_con])
=DIVIDIRTEXTO(B2; "-") derrama GB | LDN | 2291 | A en cuatro celdas a la derecha. Esa es toda la función, y luego hay cuatro cosas que conviene saber.
Toma una celda, no un rango. =DIVIDIRTEXTO(B2:B9; "-") no divide la columna — divide B2 en silencio e ignora el resto. Es la sorpresa más habitual con esta función. Para una columna entera, o copias la fórmula hacia abajo, o la envuelves:
=EXCLUIR(REDUCE(""; B2:B9; LAMBDA(acum; t; APILARV(acum; DIVIDIRTEXTO(t; "-")))); 1)
que es un patrón genuinamente útil y también el punto en el que la mayoría se va a por Power Query.
Las filas desiguales necesitan rellenar_con. Apila la división de GB-LDN-2291-A (cuatro partes) bajo la de GB-MAN-1150 (tres) y a la fila corta le falta un campo. APILARV rellena el hueco con #N/D. Pon rellenar_con a "" y obtendrás celdas vacías, que se ordenan, filtran y suman sin protestar.
#¡DESBORDAMIENTO! significa que el sitio está ocupado. Una división en cuatro partes necesita cuatro celdas vacías. Si hay algo en medio — incluido un espacio suelto que alguien escribió en 2023 — la fórmula entera devuelve #¡DESBORDAMIENTO! en lugar de un resultado parcial. Pulsa el triángulo del error y elige Seleccionar celdas que obstruyen.
El delimitador de fila convierte una cadena en una cuadrícula. El tercer argumento divide también hacia abajo:
=DIVIDIRTEXTO("GB,Londres;DE,Berlín;ES,Madrid"; ","; ";")
devuelve un bloque de 3×2. Es la forma más rápida de convertir una línea de configuración pegada, un registro de log o una lista de correos separada por punto y coma en una tabla de verdad.
🎯 Escenario: Separar Ruta del Sitio en ciudad, edificio y planta, incluyendo T-1044, donde alguien rodeó las barras de espacios.
=ESPACIOS(DIVIDIRTEXTO(D2; "/"))
Dividir primero, limpiar después. ESPACIOS opera sobre toda la matriz derramada de una vez, así que Salamanca vuelve como Salamanca sin columna auxiliar. Dividir por " / " habría funcionado en T-1044 y roto todas las demás filas — divide siempre por el delimitador en sí y limpia después.
6) Volver a Montarlo — UNIRCADENAS, CONCAT y &
Extraer es la mitad del trabajo; casi todos estos campos se desmontan para volver a montarlos con otra forma.
🎯 Escenario: Convertir DOE, john en John Doe.
=ESPACIOS(NOMPROPIO(TEXTODESPUES(C2; ","))) & " " & NOMPROPIO(TEXTOANTES(C2; ","))
TEXTODESPUES sobre la coma devuelve john — con el espacio que quien escribió puso tras la coma — así que NOMPROPIO lo capitaliza y ESPACIOS quita el relleno antes de unir las dos mitades. Pásalo por el doe, JOHN de T-1045 y el espacio final también desaparece, porque ESPACIOS hace los dos trabajos a la vez. NOMPROPIO trata bien los nombres difíciles de estos datos: O'NEILL pasa a O'Neill, Marc-André sobrevive, García Lopez no cambia.
Pero conviene saber qué rompe NOMPROPIO. Pone en mayúscula la primera letra tras cualquier carácter que no sea una letra y pasa el resto a minúsculas, lo que significa que MCDONALD se convierte en Mcdonald, IBM en Ibm y van der Berg en Van Der Berg. No hay forma general de arreglarlo — los nombres de persona no siguen una regla. Lo que sí puedes es corregir los casos concretos que contengan tus datos, encima de NOMPROPIO:
=SUSTITUIR(SUSTITUIR(NOMPROPIO(C2); "Mcd"; "McD"); "O'n"; "O'N")
Feo, explícito y honesto: es una lista de excepciones, no una regla.
UNIRCADENAS frente a &. El segundo argumento, ignorar_vacío, es la razón entera para preferirla:
=UNIRCADENAS(" / "; VERDADERO; ciudad; edificio; planta)
Con VERDADERO, un edificio ausente produce Londres / Planta 3. Con una cadena de & obtienes Londres / / Planta 3, y después una fórmula para quitar el separador doble, y después otra para el caso en que falten dos.
CONCAT frente a CONCATENAR. CONCAT acepta rangos (=CONCAT(A2:E2)); CONCATENAR es la versión heredada que solo admite argumentos sueltos y se mantiene viva por compatibilidad. No hay motivo para volver a escribirla.
Los números pierden su formato en cuanto se convierten en texto. ="Total: " & 1234,5 da Total: 1234,5, no Total: 1.234,50 — el formato de celda es una propiedad de visualización y la concatenación lee el valor subyacente. TEXTO es la forma de arrastrar el formato:
="Facturado " & TEXTO(1234,5; "#.##0,00") & " el " & TEXTO(HOY(); "dd mmm aaaa")
Los códigos de formato son los mismos del cuadro de diálogo de formato personalizado, así que constrúyelo ahí, copia el código y pégalo en TEXTO.
7) El Espacio Que No Es un Espacio
Dos fórmulas idénticas, dos celdas que se ven idénticas, y la comparación devuelve FALSO. Casi siempre es un carácter invisible, y hay tres sospechosos habituales.
ESPACIOSquita los espacios iniciales y finales y reduce las series internas a un solo espacio. Elimina solo el espacio estándar,CARACTER(32).LIMPIARelimina los 32 primeros caracteres no imprimibles, deCARACTER(1)aCARACTER(31)— saltos de línea, tabuladores, avances de página.- Ninguna de las dos elimina
CARACTER(160), el espacio de no separación, que es lo que produce cualquier copiar y pegar desde una página web, un PDF o un correo en HTML. Es el carácter invisible más común en datos de empresa y es inmune a la función que todo el mundo usa.
Diagnostica antes de fregar:
=LARGO(C6) → la longitud real, espacios incluidos
=LARGO(ESPACIOS(C6)) → si es menor, hay espacios ordinarios
=CODIGO(DERECHA(C6; 1)) → 32 es un espacio, 160 uno de no separación
=UNICODE(EXTRAE(C6; 5; 1)) → para cualquier cosa por encima de 255, p. ej. 8203 = espacio de ancho cero
En los datos de ejemplo, =LARGO(C6) devuelve uno más de lo que contarías a ojo: el solicitante de T-1045 es doe, JOHN con un espacio final, y por eso él y T-1041 te parecen la misma persona y a una comparación que distinga mayúsculas le parecen dos personas distintas.
El fregado en tres capas, en este orden:
=ESPACIOS(LIMPIAR(SUSTITUIR(A2; CARACTER(160); " ")))
SUSTITUIR primero — convierte los espacios de no separación en espacios normales para que ESPACIOS pueda verlos y quitarlos. Invierte el orden y ESPACIOS se ejecuta sobre un texto que todavía contiene CARACTER(160), no encuentra nada que hacer en los extremos, y te quedas con el problema original más una fórmula más larga.
8) Cambiar Texto — SUSTITUIR por Contenido, REEMPLAZAR por Posición
Dos funciones que se confunden constantemente y hacen trabajos realmente distintos.
SUSTITUIR(texto; texto_original; texto_nuevo; [núm_instancia]) — busca este contenido y cámbialo
REEMPLAZAR(texto_original; núm_inicial; núm_caracteres; texto_nuevo) — sobrescribe esta posición
SUSTITUIR reemplaza todas las apariciones salvo que nombres una, y distingue mayúsculas:
=SUSTITUIR(B2; "-"; "/") → GB/LDN/2291/A todos los guiones
=SUSTITUIR(B2; "-"; "/"; 2) → GB-LDN/2291-A solo el segundo
=SUSTITUIR(E2; "order"; "PO") → se salta "Order" con O mayúscula
Esa sensibilidad a las mayúsculas es una trampa real, porque HALLAR, CONTAR.SI y el = normal no distinguen. Si necesitas una sustitución que no distinga, normaliza primero las mayúsculas o trabaja con HALLAR y REEMPLAZAR.
A REEMPLAZAR le da igual lo que haya — sobrescribe un tramo. Eso la convierte en la herramienta correcta para enmascarar:
🎯 Escenario: Mostrar solo los cuatro últimos caracteres de un número de cuenta.
=REEMPLAZAR(A2; 1; LARGO(A2)-4; REPETIR("•"; LARGO(A2)-4))
Y las dos combinadas, para "reemplaza lo encontrado, esté donde esté":
=REEMPLAZAR(E2; HALLAR("order"; E2); 5; "PO")
HALLAR lo localiza sin distinguir mayúsculas, REEMPLAZAR sobrescribe esos cinco caracteres. Es la forma estándar de conseguir en Excel una sustitución que no distinga mayúsculas, y conviene guardarla apuntada porque no es evidente.
9) Comparar Texto Que No Es Exactamente Idéntico
Tres comportamientos que hay que tener claros, porque dos de ellos sorprenden en direcciones opuestas.
= ignora las mayúsculas. ="JOHN" = "john" devuelve VERDADERO. Igual que CONTAR.SI, SUMAR.SI.CONJUNTO, COINCIDIR, BUSCARX y todas las búsquedas de Excel. No hay ninguna opción para cambiarlo.
IGUAL sí las respeta. =IGUAL("JOHN";"john") devuelve FALSO. Es la única comparación integrada que lo hace.
Ninguna ignora los espacios. ="John " = "John" devuelve FALSO, e IGUAL opina lo mismo. El espacio en blanco es real; las mayúsculas no.
🎯 Escenario: T-1041 y T-1045 son el mismo técnico visitando el mismo activo dos veces — DOE, john y doe, JOHN . ¿Es un solicitante o son dos?
=CONTAR.SI(C2:C9; C2) → 1 el espacio final de C6 lo estropea
=CONTAR.SI(C2:C9; ESPACIOS(C2) & "*") → 2 el comodín absorbe el relleno
=SUMAPRODUCTO(--IGUAL(C2:C9; C2)) → 1 distingue mayúsculas, a propósito
=SUMAPRODUCTO(--(ESPACIOS(C2:C9) = ESPACIOS(C2))) → 2 la respuesta que probablemente querías
Cuatro fórmulas plausibles, tres respuestas distintas, y la diferencia está enteramente en qué propiedad invisible decidiste ignorar. Decídelo a conciencia y luego déjalo escrito en un comentario.
Los comodines funcionan directamente en CONTAR.SI, SUMAR.SI.CONJUNTO, COINCIDIR y HALLAR; BUSCARX necesita modo_coincidencia puesto a 2 para respetarlos:
=CONTAR.SI(E2:E9; "*SO-*") → 6 notas que mencionan un pedido
=CONTAR.SI(B2:B9; "GB-*") → 4 activos británicos
=BUSCARX("GB-LDN*"; B2:B9; A2:A9; "ninguno"; 2) → T-1041
Para buscar un * o un ? literales, escápalos con una virgulilla: "~*". Y cuando lo que quieras sea una prueba de "contiene" en vez de un recuento, ESNUMERO(HALLAR(...)) es el modismo — es en lo que se traducen igualmente las reglas de formato condicional de tipo "contiene".
10) Un Bloque de Análisis Que Sobrevive a la Próxima Exportación
Todo lo anterior, montado en una sola celda. LET da nombre a cada paso para que la fórmula se lea como un programa corto en vez de como un muro de paréntesis, y cada extracción tiene un plan B para que una fila mal formada produzca una marca en vez de una cascada de errores.
=LET(
bruto; $B2;
etiq; ESPACIOS(LIMPIAR(SUSTITUIR(bruto; CARACTER(160); " ")));
campos; LARGO(etiq) - LARGO(SUSTITUIR(etiq; "-"; "")) + 1;
pais; TEXTOANTES(etiq; "-"; 1; 0; 1; "?");
ciudad; TEXTOANTES(TEXTODESPUES(etiq; "-"; 1; 0; 0; ""); "-"; 1; 0; 1; "?");
unidad; TEXTOANTES(TEXTODESPUES(etiq; "-"; 2; 0; 0; ""); "-"; 1; 0; 1; "?");
rev; SI(campos = 4; TEXTODESPUES(etiq; "-"; -1); "");
SI(campos < 3;
"MAL FORMADA: " & etiq;
APILARH(pais; ciudad; unidad; rev))
)
Aquí hay cuatro cosas haciendo el trabajo, y cada una es un hábito que merece la pena llevarse al siguiente análisis:
- Normaliza antes de analizar.
etiqse friega una vez, arriba, y todos los pasos posteriores leen la versión limpia. Analizar la entrada en bruto y limpiar los trozos después significa escribir el mismoESPACIOScuatro veces y olvidarlo una. - Cuenta los campos antes de fiarte de ninguno.
camposse calcula antes de la primera extracción, y elSIfinal lo usa para rechazar filas que nunca iban a analizarse bien. Una fila con dos campos queda marcada, no truncada en silencio. - Dale a cada extracción un
si_no_se_encuentra. Las marcas"?"hacen visible un fallo parcial en la columna de salida. Envolverlo todo enSI.ERRORhabría ocultado qué campo falló — y además se habría tragado un error genuino enbruto. - Devuelve una fila, no una cadena.
APILARHderrama país, ciudad, unidad y revisión en cuatro celdas contiguas, de modo que las fórmulas posteriores reciben campos de verdad en vez de algo que tienen que volver a analizar. (APILARHes solo de 365; en 2021 devuelveUNIRCADENAS("|"; FALSO; ...)y divídelo, o simplemente escribe cuatro fórmulas.)
Equivalentes clásicos, para Excel 2021 y anteriores
| Moderno | Funciona en todas partes |
|---|---|
TEXTOANTES(A2;"-") | =IZQUIERDA(A2; ENCONTRAR("-";A2)-1) |
TEXTODESPUES(A2;"-") | =EXTRAE(A2; ENCONTRAR("-";A2)+1; LARGO(A2)) |
TEXTODESPUES(A2;"-";-1) | =ESPACIOS(DERECHA(SUSTITUIR(A2;"-";REPETIR(" ";100)); 100)) |
TEXTOANTES(A2;"-";2) | =IZQUIERDA(A2; ENCONTRAR("-";A2;ENCONTRAR("-";A2)+1)-1) |
DIVIDIRTEXTO(A2;"-") | Datos → Texto en columnas, o Power Query |
argumento si_no_se_encuentra | =SI.ERROR(fórmula; alternativa) |
El truco de REPETIR(" "; 100) de la tercera fila merece un comentario: sustituye cada guion por cien espacios, toma los cien últimos caracteres y recorta. Lo único que sobrevive es lo que hubiera después del último guion. Sirve para extraer cualquier último campo, es completamente ilegible, y durante veinte años fue la respuesta.
11) Mini Ejercicios
Copia la cuadrícula en una hoja en blanco empezando en A1 y ve bajando. Todas las respuestas son una sola fórmula.
- Recuento por país. ¿Cuántos activos hay en Gran Bretaña? (De dos formas: un
CONTAR.SIcon comodín y unSUMAPRODUCTOsobreIZQUIERDA. Deben coincidir.) - La etiqueta desigual. Escribe una sola fórmula en F2, arrastrada hacia abajo, que devuelva la letra de revisión cuando exista y
"ninguna"cuando no — sin usarDERECHA. - Reparar el nombre. Convierte la columna C en
Nombre Apellidocon mayúsculas correctas y sin espacios sobrantes, en una única fórmula que además resuelva el relleno oculto de T-1045. - Extraer el pedido. Devuelve el número de pedido de la columna E, o
"—"cuando no lo haya, sin dar por hecho que tenga cinco dígitos. - La planta como número. Ruta del Sitio termina en
Floor n. Devuelvencomo un número real que puedas sumar — recuerda queVALORsobre un texto no numérico devuelve#¡VALOR!, así que decide qué debe producir una planta ausente. - Visitas repetidas. ¿Qué etiqueta de activo aparece dos veces? Consíguelo de dos formas — una distinguiendo mayúsculas con
IGUALy otra sin distinguirlas — y explícate por qué aquí coinciden y no coincidirían si la exportación hubiera escritogb-ldn-2291-aen una de las filas.
Resumen
Las funciones son fáciles. El criterio consiste en saber que DERECHA(etiqueta; 1) es una suposición sobre tus datos y no un hecho, y que la suposición aguantará hasta el mes en que deje de hacerlo.
Tres hábitos cubren casi todo. Friega antes de analizar, porque CARACTER(160) está esperando en cualquier columna pegada. Cuenta los delimitadores antes de fiarte de una posición, porque un campo que suele tener cuatro partes algún día tendrá tres. Y ponle un plan B a cada extracción, porque un "?" en un informe se arregla el martes y un valor equivocado y verosímil se arregla en noviembre, lo arregla otra persona, y después de la auditoría.
