viernes, 6 de enero de 2012

Calcular la letra del NIF

El Número de Identificación Fiscal (NIF) está formado por un número de 8 cifras y una letra de control. La letra se obtiene mediante el siguiente cálculo:
  • Se calcula el resto de la división entera entre el número de identificación y 23.
  • Con este resto, se extrae la letra de la siguiente tabla:
Por ejemplo, si el número de identificación es 72410695, dividiéndolo por 23 obtendremos resto 2, al que le corresponde la letra W.  El NIF será 72410695W.

Para obtener la letra del NIF emplearemos la función EXTRAE. Esta función extrae de una cadena de texto el número de caracteres que se especifique, empezando desde el carácter que se indique. Su sintaxis es:
------------------------------------------------------------------------------------------------------------------------------------------
EXTRAE(texto;posición_inicial;núm_de_caracteres)

EXTRAE devuelve un número específico de caracteres de una cadena de texto, comenzando en la posición que especifique y en función del número de caracteres que especifique.
  • texto: Obligatorio. Cadena de texto que contiene los caracteres que se desea extraer.
  • posición_inicial: Obligatorio. Posición del primer carácter que se desea extraer del texto. La posición_inicial del primer carácter de texto es 1, y así sucesivamente.
  • núm_de_caracteres: Obligatorio. Especifica el número de caracteres que se desea que EXTRAE devuelva del argumento texto.
-----------------------------------------------------------------------------------------------------------------------------------------

En C5:
=EXTRAE("TRWAGMYFPDXBNJZSQVHLCKE";RESIDUO(B5;23)+1;1)

El resultado es correcto. Sin embargo, al borrar el número de B5 para hallar otra letra, en C5 aparece la letra T, cosa que no tiene sentido. Lo que ocurre es que al dividir una celda en blanco entre 23, Excel devuelve resto cero, al que le corresponde la letra T. Para evitarlo, hacemos la siguiente corrección:

En C5:
=SI(B5<>"";EXTRAE("TRWAGMYFPDXBNJZSQVHLCKE"; RESIDUO(B5;23)+1;1);"")

Ahora, cuando la celda B5 está vacía, no se muestra nada en C5. Sin embargo, si escribimos un texto en B5, la fórmula devuelve el error #¡VALOR! Lo evitamos con otra corrección:

En C5:
=SI.ERROR(SI(B5<>"";EXTRAE("TRWAGMYFPDXBNJZSQVHLCKE";RESIDUO(B5;23)+1;1);"");"")

También podemos poner esta otra fórmula (Excel 2003):
=SI(O(B5="";ESTEXTO(B5));"";EXTRAE("TRWAGMYFPDXBNJZSQVHLCKE";RESIDUO(B5;23)+1;1))

En cualquier caso, ya no se producen errores y las fórmulas funcionan correctamente.

Descargar archivo (S94-NIF.xls)

Descargar archivo (S94-NIF.xlsx)


6 comentarios:

  1. perfectísima. diría yo

    ResponderEliminar
  2. Muchas gracias.

    Un saludo.

    ResponderEliminar
  3. Hola Javier. Veo que solo tienes notas en tu a archivo hasta 2013. sigue publicando? o has cambiado de blog.
    saludos

    ResponderEliminar
  4. La fórmula del del "=SI(B5<>"";EXTRAE("TRWAGMYFPDXBNJZSQVHLCKE"; RESIDUO(B5;23)+1;1);"")" me da error

    ResponderEliminar
  5. No me sale, quizá sea por mi versión de excel que no tiene implementada la función de "extrae" ni "resto".

    ResponderEliminar