LibreOffice Calc: Casos prácticos (VII)

José Francisco Martínez Jiménez

Funcionario jubilado.

Servicio de Gestión Contable. 
Intervención General de la Junta de Andalucía.
Consejería de Hacienda y Financiación Europea.

Es muy conveniente haber leído antes todos los artículos relacionados con LibreOffice Calc publicados en el apartado Tecnología práctica de esta revista.

Caso práctico n.º 15: Esquema automático.

Nivel: Básico – Intermedio.

Revista_IAAP_Caso_practico_15_Esquema_Automatico

En el “Caso práctico n.º 14: Ocultar/mostrar columnas/filas rápidamente” del número 15 de esta revista vimos cómo agrupar y desagrupar filas y/o columnas creando un “esquema” personalizado. Ahora vamos a ver qué tenemos que hacer para que LibreOffice Calc lo haga por nosotros, con lo cual ganaremos en velocidad y productividad.

Paso 1: ¿Cuándo …?

Lo podremos hacer cuando tengamos una tabla parecida a la de la Imagen 1. En ella podemos observar que tanto los trimestres, como los subtotales y el total son fórmulas (Imagen 2).

Imagen 1: Datos inventados

Para ver las fórmulas de las celdas pincharemos en el menú Ver ▸ Mostrar fórmula (Imagen 3). Es muy posible que tengamos que ensanchar las columnas para poderlas visualizar correctamente.

Imagen 2: Fórmulas del primer trimestre ...
Imagen 3: Menú Ver ▸ Mostrar fórmula

Paso 2: ¿Cómo …?

Seleccionamos la tabla completa y pinchamos en el menú Datos ▸ Grupo y esquema ▸ Esquema automático. Tan simple como eso (Imagen 4).

Imagen 4: Menú Datos ▸ Grupo y esquema ▸ Esquema automático

Acto seguido lo que veremos serán los símbolos de esquema que ya conocemos del “Caso práctico n.º 14” (Imagen 5).

Imagen 5: Esquema automático. El total, los subtotales y los trimestres son fórmulas

Como ya vimos, pinchando en el botón 1 de los símbolos de esquema se ocultan las filas/columnas. Si pinchamos en el botón 2 se mostrarán (ver Imagen 6).

Imagen 6: Resultado al pinchar en el botón 1

Para quitar el esquema pincharemos en el menú Datos Grupo y esquema Quitar esquema.

Caso práctico n.º 16: Función EXP.REG( ).

Nivel: Intermedio – Avanzado.

Revista_IAAP_Caso_practico_16_Expresiones_Regulares

Esta función está disponible desde la versión 6.2 de LibreOffice. Es una función muy potente que nos traslada al mundo de las expresiones regulares. En los apartados 2, 3 y 4 del artículo LibreOffice Calc: Cómo eliminar los espacios innecesarios del número 2 de esta revista ya tuvimos un primer encuentro con ellas.

Muy bien, pero ¿qué es una expresión regular? Es una secuencia de caracteres que conforma un modelo o patrón de búsqueda. Se utiliza principalmente para la búsqueda de patrones de cadenas de caracteres u operaciones de sustituciones (Wikipedia: Expresión regular). En la Ayuda de LibreOffice Calc encontraremos más información relativa a esta función, así como los significados especiales de determinados caracteres como son: la barra invertida “\”, el punto “.”, el asterisco “*”,

el guion medio “-”, las llaves “{ }”, los corchetes “[ ]”, los paréntesis “( )”, etcétera. Y, obviamente, haciendo un búsqueda en Google podremos encontrar muchas páginas como, por ejemplo, Sintaxis de las expresiones regulares del mismo equipo de Google, o Lenguaje de expresiones regulares – Referencia rápida de Microsoft. Es muy importante haber leído los enlaces anteriores para poder comprender lo que sigue a continuación.

En este caso práctico usaremos la función EXP.REG( ) para comprobar si un determinado DNI, NIF (persona física o jurídica), NIE o NIF de Operador Comunitario se ajusta al formato legal de dígitos y/o letras admitidos por los organismos competentes. ¡Atención! Sólo se comprueba que el formato sea correcto, no que exista realmente; por ejemplo, el DNI 99999999A (ocho dígitos más una letra) es correcto en su formato pero puede ser que no exista a la fecha de redacción de este artículo y puede que la letra final no sea la correcta.

(Para obtener más información sobre los DNI/NIE/NIF se pueden visitar las
páginas web de la Agencia Tributaria y del Ministerio del Interior).

Veamos las expresiones regulares a utilizar en cada caso (extraídas del archivo descargable correspondiente; en la celda C3 se encuentra el NIF a comprobar):

  1. DNI/NIF de persona física de nacionalidad española residente en España:

    [0-9]{8}[A-HJ-NP-TV-Z] o también \d{8}[A-HJ-NP-TV-Z]

    Ocho dígitos seguidos de una letra de entre las siguientes ABCDEFGH JKLMN PQRST VWXYZ. [0-9] y \d son equivalentes (un dígito del cero al nueve, ambos inclusive).

    =SI(ESNOD(EXP.REG(C3;”[0-9]{8}[A-HJ-NP-TV-Z]”));”ERROR”;”CORRECTO”)

  2. NIF de persona física de nacionalidad española menor de 14 años:

    K[0-9]{7}[A-HJ-NP-TV-Z]

    Letra K seguida de siete dígitos más una letra ABCDEFGH JKLMN PQRST VWXYZ.

    =SI(ESNOD(EXP.REG(C3;”K[0-9]{7}[A-HJ-NP-TV-Z]”));”ERROR”;”CORRECTO”)

  3. NIF de españoles residentes en el extranjero y que se trasladan a España por un tiempo inferior a seis meses:

    L[0-9]{7}[A-HJ-NP-TV-Z]

    Letra L seguida de siete dígitos más una letra ABCDEFGH JKLMN PQRST VWXYZ.

    =SI(ESNOD(EXP.REG(C3;”L[0-9]{7}[A-HJ-NP-TV-Z]”));”ERROR”;”CORRECTO”)

  4. NIE/NIF de persona física extranjera residente en España:

    [X-Z][0-9]{7}[A-HJ-NP-TV-Z]

    Una letra XYZ seguida de siete dígitos más una letra ABCDEFGH JKLMN PQRST VWXYZ.

    =SI(ESNOD(EXP.REG(C3;”[X-Z][0-9]{7}[A-HJ-NP-TV-Z]”)); “ERROR”; “CORRECTO”)

     

  5. NIF de personas físicas que carezcan de la nacionalidad española que vayan a realizar operaciones de naturaleza tributaria:

    M[0-9]{7}[A-HJ-NP-TV-Z]

    Letra M seguida de siete dígitos más una letra ABCDEFGH JKLMN PQRST VWXYZ.

    =SI(ESNOD(EXP.REG(C3;”M[0-9]{7}[A-HJ-NP-TV-Z]”));”ERROR”;”CORRECTO”)

  6. Resumir todos los anteriores (DNI/NIE/NIF de persona física):

    [K-MX-Z][0-9]{7}[A-HJ-NP-TV-Z]$|[0-9]{8}[A-HJ-NP-TV-Z]$

    Una letra KLM XYZ seguida de siete dígitos más una letra ABCDEFGH JKLMN PQRST VWXYZ, o bien, ocho dígitos seguidos de una letra ABCDEFGH JKLMN PQRST VWXYZ.

    =SI(ESNOD(EXP.REG(C3;”[K-MX-Z][0-9]{7}[A-HJ-NP-TV-Z]$|[0-9]{8}[A-HJ-NP-TV-Z]$”));”ERROR”;”CORRECTO”)

  7. NIF de persona jurídica:

    [A-HJUV][0-9]{8}$|[NP-SW][0-9]{7}[A-J]$

    Una letra ABCDEFGH JUV seguida de ocho dígitos, o bien, una letra N PQRS W seguida de siete dígitos más una letra ABCDEFGHIJ.

    =SI(ESNOD(EXP.REG(C3;”[A-HJUV][0-9]{8}$|[NP-SW][0-9]{7}[A-J]$”)); “ERROR”; “CORRECTO”)

  8. NIF de Operador Comunitario:

    En este caso crearemos una tabla como la de la Imagen 7, siendo necesarias las dos primeras columnas (COD PAIS y EXPRESION REGULAR) y las restantes (PAIS y NOTAS) nos aportan información adicional pero no serán usadas en las fórmulas empleadas.

    =SI(ESNOD(EXP.REG(C3;BUSCARV(IZQUIERDA(C3;2);T_OPER_COM;2;0)));”ERROR”;”CORRECTO”)

Imagen 7: Tabla NIF de Operador Comunitario. Fuente: AEAT, diseño de registros del modelo 347

Este caso práctico puede ser complicado de entender pero ya sabéis, “no se conquistó Zamora en una hora”. Buscad más información, leed y, sobre todo, practicad. Y aplicad lo aprendido a otras situaciones.

Este artículo se ha escrito utilizando LibreOffice Writer, Calc e Impress versión 7.5.7 para entornos corporativos.

Saludos cordiales

Si te ha gustado este artículo, encontrarás más contenidos interesantes en nuestra sección “Tecnología práctica”.

Y no dejes de ver qué tenemos publicado en los distintos números de EnRed@2.0.