Fórmulas de texto y códigos en una columna calculada
Una dirección en una sola línea, un código con ceros a la izquierda, un DNI que no debe salir de la oficina, un importe como «1.234,50» en lugar de 1234.5: para esto se suele escribir una macro o abrir Excel. Tabulens tiene funciones para ello en la columna calculada: expresiones regulares, división por separador, hash SHA-256, Base64, codificación para URL y HTML, formato de número y de fecha.
Gratis para usar. «Transformación» → «Columna calculada…». No se sube nada. Versión para Windows — 5.4 MB, sin instalación: detalles. Pro — 29 USD una sola vez: precio.
Las funciones
| Función | Qué hace |
|---|---|
REGEXEXTRACT(x, 'patrón', [grupo]) | parte del texto según una expresión regular; el grupo va entre paréntesis, sin paréntesis se devuelve toda la coincidencia; si no hay, queda vacío |
REGEXREPLACE(x, 'patrón', por) | sustituye todas las coincidencias |
SPLITPART(x, ';', n) | la parte n según un separador, contando desde uno; −1 es la última; se quitan los espacios de los bordes |
SHA256(x, [sal]) | hash SHA-256 de «sal + valor»; un valor vacío sigue vacío |
BASE64(x), UNBASE64(x) | codificar y decodificar Base64 |
URLENCODE(x), URLDECODE(x) | espacio ↔ %20 y demás, para direcciones |
HTMLENCODE(x), HTMLDECODE(x) | escapa y restituye < > & |
NUMFMT(x, decimales, [miles], [coma]) | un número a texto con los decimales y separadores que elija |
DATEFMT(fecha, 'máscara') | una fecha a texto según una máscara: YYYY, YY, MM, DD, hh, mm, ss |
Es el mismo lenguaje que el de las fórmulas habituales y el de la línea de filtro, así que las funciones se anidan y se combinan con IF, TRIM y las demás.
Ejemplos
| Tarea | Fórmula |
|---|---|
| Número de portal de «Calle Mayor, n.º 15» | REGEXEXTRACT(DIRECCION, 'n\.º ?(\d+)') |
| Quitar los ceros a la izquierda de un código | REGEXREPLACE(CODIGO, '^0+', '') |
| La última palabra, p. ej. el apellido de «NOMBRE» | SPLITPART(NOMBRE, ' ', -1) |
| El mismo código en lugar del DNI para quien conozca la sal | SHA256(DNI, 'su-sal') |
| Un importe como «1.234,50» | NUMFMT(IMPORTE, 2, '.', ',') |
| Una fecha como «05.03.2024» o «20240305» | DATEFMT(NACIMIENTO, 'DD.MM.YYYY'), DATEFMT(NACIMIENTO, 'YYYYMMDD') |
Las expresiones regulares no distinguen mayúsculas y \w significa una letra de cualquier alfabeto, no solo latino: valen acentos, cirílico y caracteres CJK.
Un hash en lugar de datos personales
SHA256(DNI, 'sal') da el mismo código para el mismo DNI, así que dos exportaciones se pueden cruzar y comparar con esos códigos sin que nadie vea los números. Sin sal, el hash de un número corto se averigua fácilmente por fuerza bruta; use sal y guárdela como una contraseña.
Si solo necesita un número de orden y no un código, use «Anonimizar»: sustituye los valores por números correlativos.
En un escenario
Cualquiera de estas fórmulas puede ser un paso de escenario. En el catálogo «+», los pasos de fórmula tienen un grupo «Texto y códigos» con plantillas: parte del texto según un patrón, fecha o número a texto con máscara, rellenar con ceros a la izquierda, quitar ceros a la izquierda, hash SHA-256 con sal. Solo hay que cambiar la columna y el patrón.
La sal está escrita en la fórmula y, por tanto, también en el archivo del escenario. Pase el escenario solo a quien pueda conocer la sal.
Preguntas frecuentes
¿Qué pasa si el patrón no encuentra nada?
REGEXEXTRACT devuelve un valor vacío y REGEXREPLACE deja el texto como está. Los vacíos se pueden filtrar como en cualquier otra columna.
¿Cómo tomo partes desde el final?
Con un número negativo en SPLITPART: −1 es la última parte, −2 la anterior.
¿Se puede escribir el resultado en el archivo?
Una columna calculada no se escribe en el archivo. Su menú tiene «Escribir los valores en la columna»: los valores entran como una edición y se guardan como cualquier otra.
¿Se puede revertir un hash?
No: SHA-256 es de un solo sentido. Un valor solo se recupera probando posibilidades, por eso los números cortos necesitan sal.
Gratis para usar. Su archivo no se sube a ningún servidor. Versión para Windows — 5.4 MB, sin instalación: detalles. Pro — 29 USD una sola vez: precio.