viernes, 24 de agosto de 2012

Dígitos de control de una cuenta bancaria

Hace unos días recibí una llamada telefónica, supuestamente, de mi compañía telefónica. La empleada me ofrecía el cambio de router y una serie de mejoras gratuitas. Al final de una larga y convincente explicación, me aseguró que para llevar a cabo la operación era imprescindible que le diera el número de mi cuenta corriente, pero, por motivos de seguridad, no debía proporcionarle los dos dígitos de control. Naturalmente, me despedí cortésmente y colgué.

Este intento de... ¿cómo llamarlo? me ha proporcionado el tema del artículo de hoy: los Dígitos de Control de las cuentas bancarias.

Todas las cuentas bancarias tienen un número de identificación. Este número, llamado Código Cuenta Cliente (CCC), está compuesto por veinte dígitos que corresponden a:
  • Código de la Entidad (los 4 primeros dígitos) donde radica la cuenta. Lo proporciona el Banco de España.
  • Código de la Oficina (los 4 dígitos siguientes) que identifica la oficina donde el cliente tiene abierta la cuenta.
  • Dígitos de Control (2 dígitos: el noveno y el décimo). El primero sirve para verificar los Códigos de Entidad y Oficina; el segundo para verificar el Número de Cuenta.
  • Número de Cuenta (los 10 últimos dígitos) que incluye todos los identificadores de índole interna que la Entidad desee utilizar para individualizar cada cuenta.
La determinación de los dos Dígitos de Control se realiza de acuerdo a las especificaciones de la Norma bancaria 34 de la AEB (Asociación Española de Banca). Para el cálculo de los dígitos hay que realizar una serie de operaciones, que se mostrarán en el ejemplo que sigue, basándose en la siguiente tabla ponderada:

Consideremos el caso hipotético de un cliente que ha abierto una cuenta bancaria en la Entidad 0210 y en la Oficina 0345. La entidad le asigna el Número de Cuenta 0000067892 y dos Dígitos de control que vamos a determinar.

El CCC de la cuenta será 0210 0345 xz 0000067892. Debemos calcular los valores de los dos Dígitos de control representados por xz.
  • El dígito x se obtiene a partir de los 8 dígitos de la Entidad y la Oficina (02102345) multiplicándolos ordenadamente por los 8 primeros valores de la tabla y sumando los resultados.

  • A continuación, se obtiene el resto de la división entre la suma (84) y 11. El resultado es 7.
  • El siguiente paso consiste en restar 11 menos el resto anterior: 11-7=4
  • El número obtenido es el primer valor (x) de los Dígitos de Control, salvo que la resta anterior sea 10 u 11. Si es 10, x toma el valor 1; si es 11, toma el valor 0. En nuestro caso, no se da ninguna de estas excepciones, por lo que x valdrá 4.
Ya hemos determinado el valor del primer dígito. Vamos a por el segundo.
  • El dígito z se obtiene a partir de los 10 dígitos del Número de Cuenta (0000067892) multiplicándolos ordenadamente por los 10 valores de la tabla y sumando los resultados.

  • Volvemos a repetir el mismo proceso que en el caso anterior. Hallamos el resto de la división entre la suma (218) y 11. El resultado es 9.
  • Restamos 11 menos el resto: 11-9=2
  • Si el valor obtenido es 10, z valdrá 1; si es 11, 0; si es cualquier otro número, z será ese número. Por tanto, en el ejemplo que estamos manejando, z es 2.
En conclusión, los Dígitos de Control son x=4 y z=2 y el Código Cuenta Cliente (CCC) es 0210 0345 42 0000067892.

Una vez conocida la mecánica del cálculo de los Dígitos de Control, vamos a hacer un ejercicio en el que dado un Código Cuenta Cliente (CCC) determinemos si es un código correcto o incorrecto. Para ello, calcularemos los Dígitos de Control y los compararemos con los del CCC.

El Código Cuenta Cliente lo escribiremos en la celda C5, los cálculos los haremos en las columnas F:M y el resultado lo pondremos en C7.

El primer paso consiste en asignar formato de texto a la celda C5. Si no lo hacemos, Excel le asignará el formato general y el número quedará expresado en modo exponencial (2,10035E+18). Para hacerlo, en el menú contextual, accedemos a Formato de celdas y, en la pestaña Número, elegimos la categoría Texto.

En C5 escribimos los 20 dígitos de la cuenta: 02100345420000067892

Para obtener el primer Dígito de Control, extraemos en F3 los 8 primeros números de la cuenta y, debajo, ponemos cada dígito en una fila distinta.

En F3:
=IZQUIERDA(C5;8)    [Resultado: 02100345]

En F4:
=EXTRAE($F$3;9-FILA(A1);1)    [Resultado: 5]

Extendemos la fórmula de la celda F4 hasta la fila 11.

En la columna G obtendremos el producto de cada dígito con los valores correspondientes de la tabla ponderada. Esta tabla la tenemos en el rango L3:M13.

En G4:
=F4*M4    [Resultado: 30]

Extendemos la fórmula de la celda G4 hasta la fila 11.

Sumamos los números de la columna G, dividimos la suma por 11 para quedarnos con el resto y hallamos la diferencia entre 11 y este valor. Finalmente, comprobamos si el resultado es distinto de 10 u 11 y obramos en consecuencia. Todo esto lo hacemos en G15:G18.

En G15:
=SUMA(G4:G11)    [Resultado: 84]

En G16:
=RESIDUO(G15;11)    [Resultado: 7]

En G17:
=11-G16    [Resultado: 4]

En G18:
=SI(Y(G17<>10;G17<>11);G17;SI(G17=10;1;0))    [Resultado: 4]

Ya hemos descubierto que el primer Dígito de Control es el 4. El segundo dígito se obtiene de forma similar. Primero, extraeremos los 10 últimos números de la cuenta y los pondremos en filas diferentes.

En I3:
=DERECHA(C5;10)

En I4:
=EXTRAE($I$3;11-FILA(A1);1)    [Resultado: 2]

Extendemos la fórmula de la celda I4 hasta la fila 13.

En J4:
=I4*M4    [Resultado: 12]

Extendemos la fórmula de la celda J4 hasta la fila 13.

En J15:
=SUMA(J4:J13)    [Resultado: 218]

En J16:
=RESIDUO(J15;11)    [Resultado: 9]

En J17:
=11-J16    [Resultado: 2]

En J18:
=SI(Y(J17<>10;J17<>11);J17;SI(J17=10;1;0))    [Resultado: 2]

El segundo Dígito de Control es el 2.

Sólo nos falta comprobar si los dígitos noveno y décimo del CCC que nos han proporcionado forman 42. Si coincide, la cuenta será correcta; en caso contrario, será incorrecta.

En C7:
=SI(ESBLANCO(C5);"";SI(G18&J18=EXTRAE(C5;9;2);"Correcto";"Incorrecto"))    [Resultado: Correcto]

Cuando os pidan el número de vuestra cuenta bancaria y os digan que, por motivos de seguridad, no les proporcionéis los dígitos de control... ¡cuidado! Hay trampa. Como acabamos de comprobar en este ejercicio, los números ocultos se pueden obtener fácilmente.




martes, 14 de agosto de 2012

Rastrear una fórmula

Cuando una fórmula compleja devuelve un resultado incorrecto podemos rastrearla para encontrar el fallo y corregirlo. También tendremos que rastrear la fórmula si ha sido escrita por otra persona y no la entendemos. Esta operación puede hacerse mediante un procedimiento manual (tecla F9) o usando una herramienta de Excel (Evaluar fórmula).

Comencemos por el procedimiento manual. Necesitamos una fórmula compleja; por ejemplo, la que se muestra en la celda Q8.

La barra de fórmulas muestra la fórmula que hay en la celda. Es una fórmula complicada y difícil de entender. Cada función hará algo..., ¿pero qué? Por ejemplo, ¿qué hace la expresión: CONTAR($G8:P8)<$E8?

Descubrirlo es facilísimo. En la barra de fórmulas, seleccionamos con el ratón la expresión a evaluar; en nuestro caso: CONTAR($G8:P8)<$E8.

Una vez hecha la selección, pulsamos F9 y Excel sustituirá la fórmula por su valor. En el caso que nos ocupa, el valor devuelto será VERDADERO.

Para recuperar la fórmula original tenemos que pulsar Esc. Pero no vamos a hacerlo para seguir realizando nuevas comprobaciones. Por ejemplo, seleccionamos: Q$3=$C8

Pulsando F9 obtenemos:

De este modo, rastreamos la fórmula para descubrir por qué se obtiene un determinado resultado o para buscar los errores que hayamos podido cometer. Terminaremos pulsando Esc para recuperar la fórmula.

El otro procedimiento es Evaluar fórmula. Se trata de una herramienta que hace lo mismo que hemos hecho con F9 pero la selección de lo que se quiere evaluar no la hace el usuario sino que la decide Excel, siguiendo el orden que utiliza internamente para hacer los cálculos.

Volveremos a usar la fórmula de la celda Q8 para ilustrar el procedimiento a seguir. Con la celda Q8 seleccionada, accedemos al grupo Auditoría de fórmulas de la pestaña Fórmulas y elegimos Evaluar fórmula.

Excel muestra la ventana correspondiente.

En esta ventana, Excel subraya la operación que va a hacer en primer lugar. En el ejemplo, va a obtener el dato que hay en la celda P8. Para que se realice este cálculo debemos hacer clic en el botón Evaluar. Como en P8 hay un 6, Excel sustituirá P8 por 6 y subrayará la operación siguiente:

La próxima operación será: ESNUMERO(6). Volviendo a pulsar el botón Evaluar, Excel comprueba si el 6 es un número. Como, efectivamente, lo es, devuelve VERDADERO y subraya la nueva operación.

Repitiendo el proceso podremos rastrear, paso a paso, toda la secuencia de cálculos que hace el ordenador. Cuando hayamos terminado pulsaremos en botón Cerrar.


lunes, 6 de agosto de 2012

Cuándo usar SUBTOTALES en lugar de otras funciones

Se puede usar SUBTOTALES en sustitución de las siguientes funciones: PROMEDIO, CONTAR, CONTARA, MAX, MINPRODUCTO, DESVEST, DESVESTP, SUMA, VAR y VARP. La sintaxis es:

SUBTOTALES(núm_función;ref1;[ref2];...)
  • núm_función: es un número del 1 al 11 ó del 101 al 111.

  • Ref1: es el rango al que se aplica la función. Obligatorio.
  • Ref2, Ref3...: son los otros rangos a los que se les aplica la función. Opcional.
Por ejemplo, si queremos sumar las celdas del rango A1:A5 lo normal es poner: =SUMA(A1:A5), pero obtendremos el mismo resultado usando la función SUBTOTALES, con los números 9 ó 109 como primer argumento, de esta manera: =SUBTOTALES(9;A1:A5) o =SUBTOTALES(109;A1:A5). De la misma forma, podremos sustituir por SUBTOTALES cualquiera de las funciones mostradas en la tercera columna del cuadro anterior.

¿Por qué usar una fórmula más compleja si podemos obtener el mismo resultado con otra más simple? Esta es la pregunta que vamos a tratar de responder en este artículo. Para ello, partiremos de la tabla de valores C2:F12:

En las filas 14 a 28 hemos hecho unos cuantos cálculos con funciones convencionales y con SUBTOTALES. Por ejemplo, en D14 la fórmula es: =SUMA(D3:D12); es decir, una suma sencilla. En D15 hemos usado SUBTOTALES con el argumento 9: =SUBTOTALES(9;D3:D12). En D16 hemos usado el argumento 109: =SUBTOTALES(109;D3:D12).

En el resto de las celdas de la columna D, las fórmulas son:

En D18: =PROMEDIO(D3:D12)
En D19: =SUBTOTALES(1;D3:D12)
En D20: =SUBTOTALES(101;D3:D12)

En D22: =MAX(D3:D12)
En D23: =SUBTOTALES(4;D3:D12)
En D24: =SUBTOTALES(104;D3:D12)

En D26: =CONTAR(D3:D12)
En D27: =SUBTOTALES(2;D3:D12)
En D28: =SUBTOTALES(102;D3:D12)

Por el momento, no se aprecia ninguna diferencia al usar una función convencional  o SUBTOTALES. Pero veamos lo que ocurre al ocultar algunas filas del rango C2:F12.

Seleccionamos las filas 5, 6, 7, 8 y 9; hacemos clic con el botón derecho en la selección y, en el menú emergente, elegimos la opción Ocultar. El resultado es el siguiente:


Las funciones convencionales que hemos empleado (SUMA, PROMEDIO, MAX y CONTAR) devuelven los mismos resultados; las celdas donde hemos usado la función SUBTOTALES con el primer argumento comprendido entre 1 y 11 también muestran el mismo resultado; sin embargo, los SUBTOTALES obtenidos con argumentos comprendidos entre 101 y 111 han devuelto valores distintos. Comprobamos que esta función hace exactamente lo que está señalado en el encabezado de la tabla que hemos mostrado en la sintaxis de la función: pasa por alto valores ocultos.

Ahora que ya sabemos que los argumentos del 101 al 111 se deben emplear para operar únicamente con los datos visibles excluyendo los ocultos, nos preguntamos en qué casos son útiles los argumentos que van del 1 al 11.

Para responder a esta pregunta, comenzamos borrando todas la fórmulas de las filas 14 a 28. También debemos mostrar las filas ocultas. Para ello, seleccionamos las filas 4 y 10, hacemos clic con el botón derecho en la zona seleccionada y elegimos Mostrar.

Necesitamos transformar el rango de datos con el que vamos a trabajar en una tabla. Lo haremos seleccionando C2:F12 y eligiendo Insertar + Tabla. Excel mostrará la ventana Crear tabla.

Nos aseguramos de que estén seleccionadas las opciones de la figura y pulsamos Aceptar.

En D14 escribimos =SUMA(, seleccionamos con el ratón el rango D3:D12 y pulsamos Entrar. Excel escribirá la siguiente fórmula: =SUMA(Tabla1[Poducto1]) 

Por defecto, la tabla que hemos creado tiene de nombre Tabla1. Por ese motivo, la expresión Tabla1[Poducto1] hace referencia al rango D3:D12.

Nota: Si queremos, podemos cambiar Tabla1 por otro nombre accediendo a Fórmulas + Administrador de nombres. En la ventana Administrador de nombres, seleccionamos Tabla1, pulsamos el botón Editar y escribimos el nuevo nombre.

Siguiendo este procedimiento, ponemos las siguientes fórmulas:

En D14: =SUMA(Tabla1[Poducto1])
En D15: =SUBTOTALES(9;Tabla1[Poducto1])
En D16: =SUBTOTALES(109;Tabla1[Poducto1])

En D18: =PROMEDIO(Tabla1[Poducto1])
En D19: =SUBTOTALES(1;Tabla1[Poducto1])
En D20: =SUBTOTALES(101;Tabla1[Poducto1])

En D22: =MAX(Tabla1[Poducto1])
En D23: =SUBTOTALES(4;Tabla1[Poducto1])
En D24: =SUBTOTALES(104;Tabla1[Poducto1])

En D26: =CONTAR(Tabla1[Poducto1])
En D27: =SUBTOTALES(2;Tabla1[Poducto1])
En D28: =SUBTOTALES(102;Tabla1[Poducto1])

Las fórmulas devuelven los mismos resultados que en el ejemplo anterior.

Al transformar el rango en una tabla conseguimos varias cosas:
  • Poder añadir nuevas filas a la tabla sin que sea necesario cambiar las fórmulas de las filas 14 a 28. Las fórmulas se recalcularán automáticamente teniendo en cuenta los nuevos valores incorporados a la tabla.
  • Filtrar los datos abriendo la lista asociada a las flechas de los encabezados
Esta última particularidad es la que vamos a usar. Necesitamos filtrar los datos de manera que los cálculos se realicen excluyendo las filas correspondientes al periodo comprendido entre el 04/03/2012 y el 07/03/2012. Para ello, hacemos clic en la flecha del primer encabezado de la tabla y desmarcamos los cuadros de verificación de las fechas señaladas a continuación (tendremos un control mayor si elegimos Filtros de fecha):

Pulsamos Aceptar y comprobaremos, igual que en el caso anterior, que las fórmulas convencionales siguen operando con toda la tabla, mientras que las celdas que usan SUBTOTALES eliminan de los cálculos las filas filtradas. Esto ocurre tanto si utilizamos los parámetros de 1 al 11 como si usamos los comprendidos entre 101 y 111.

Sin quitar el filtro añadimos dos nuevas filas y comprobamos que los nuevos valores modifican las fórmulas sin que intervengan los valores filtrados (en las fórmulas convencionales los valores filtrados sí son tenidos en cuenta).