Cada vez más utilizamos nuestras tarjetas de crédito para pagar. Si lo hacemos a través de internet debemos introducir nuestro número de la tarjeta, junto con la fecha de caducidad y un código que suele venir en la parte posterior. En el momento de pagar se realiza una verificación de que la tarjeta existe, se suele mirar si tiene fondos y a continuación se procede a realizar el cargo en la cuenta.
Debemos saber que la numeración de la tarjeta, esos 16 números que suelen estar divididos en grupos de 4 para facilitar la lectura, tienen cierta información, además de un dígito de control que nos permite saber si el número que nos han facilitado es real (tiene formato de tarjeta de crédito) o por lo contrario se lo han inventado. La validación de ese número no nos asegura que la tarjeta sea válida, esté caducada o tenga o no saldo, pero si nos asegura una primera identificación.
Veamos que información tienen los números de la tarjeta de crédito:
– El primer dígito nos identifica el sector al que pertenece la compañía que emite la tarjeta:
- 1 y 2: Aerolíneas
- 3: Viajes y entretenimiento, entre las que encontramos a American Express
- 4: Visa
- 5: Master Card
- 6: Discovery Card
- 7: Industria del petróleo
- 8: Telecomunicaciones
- 9: Dígito reservado para uso del país en el que opera la tarjeta
– Los 6 dígitos siguientes componen el denominado INN (Issuer Identification Numer), el número de identificación de la tarjeta. Aquí hay información que es la mezcla entre el emisor de la tarjeta y la zona de procedencia geográfica.
– Los dígitos restantes se encuentra información relativa al propio titula de la tarjeta y por motivos de seguridad las diferentes entidades bancarias no especifican como asignan esta numeración.
– El último dígito es el denominado dígito de control, y su función es la de poder controlar que todos los demás dígitos de la tarjeta concuerdan y son correctos. Este dígito se calcula con el algoritmo de Luhn.
¿Cómo ver si la numeración de una tarjeta es correcta?
Primero de todo vamos a explicar como se realiza el cálculo para saber si el número de una tarjeta es correcta y después intentaremos utilizar Excel para que nos ayude en este cálculo.
1.- Deberemos trabajar con toda la numeración de forma contigua, sin espacios en blanco, con lo que deberemos proceder a eliminarlos.
2.- A continuación iremos cogiendo cada dígito que se encuentra en la posición impar y lo multiplicaremos por 2
3.- Si el resultado de esta multiplicación tiene dos dígitos, sumaremos cada uno de estos dígitos y nos quedaremos con la suma para quedarnos con un número de un solo dígito.
4.- Sumaremos todos los valores obtenidos de cada posición impar
5.- Procederemos a sumar el valor obtenido a todos los valores que tenemos en las posiciones pares (incluido el último dígito, que es el de control).
6.- Ahora solo nos queda verificar que el resultado es múltiplo de 10. Si es así, el número de la tarjeta es correcto, si no lo es, el número que nos han facilitado no es correcto y no pertenece a ninguna tarjeta válida.
Pongamos un ejemplo y después lo trabajaremos con Excel
Trabajaremos con este número de tarjeta 4691 4195 2649 6607
Como ya hemos visto, primero quitaremos todos los espacios en blanco y nos quedaremos con el valor: 4691419526496607
Ahora iremos cogiendo cada posición impar y lo multiplicaremos por 2. Recuerda que si el resultado tiene dos dígitos, deberemos sumar los dos dígitos y reservarnos ese valor.
4691419526496607 (hemos seleccionado en negrita las posiciones impares
4*2 = 8
9*2 = 18 -> 1+8 = 9
4*2 = 8
9*2 = 18 -> 1+8 = 9
2*2 = 4
4*2 = 8
6*2 = 12 -> 1+2 = 3
0*2 = 0
A continuación sumamos todos los valores obtenidos 8+9+8+9+4+8+3+0 = 49
Ahora cogemos todos los dígitos que se encuentran en las posiciones pares y se lo sumamos a este 49
4691419526496607
6+1+1+5+6+9+6+7 = 41 + 49 = 90
Ahora tenemos el valor 90, lo único que nos queda es ver si este valor es múltiplo de 10, con lo que solo deberemos dividirlo entre 10 y si el resto es 0 querrá decir que el número de la tarjeta de crédito con el que hemos estado trabajando cumple con las características de un número de tarjeta correcto.
En este caso el resto de dividir 90 entre 10 es 0 (tenemos un número correcto)
¿Cómo aplicar todos estos cálculos en Excel?
Vamos a dividir el problema en diferentes celdas para así controlar mejor el cálculo y después ya lo iremos unificando todo para tener el cálculo en una sola celda.
Partamos del caso que ponemos el número de la tarjeta en la posición A1 de esta forma ‘4691 4195 2649 6607 recuerda que utilizamos ‘ para indicar que estamos trabajando con una cadena alfanumérica y no con un número ya que si no, no podríamos insertar espacios en blanco.
Ahora para poder trabajar de forma correcta deberemos quitar los espacios en blanco. Hay varias formas de poderlo hacer, pero utilizaremos la función EXTRAE() donde iremos cogiendo grupos de 4 valores y los uniremos mediante &
En la celda A2 escribiremos la función =EXTRAE(A1;1;4)&EXTRAE(A1;6;4)&EXTRAE(A1;11;4)&EXTRAE(A1;16;4) con lo que conseguiremos el valor 4691419526496607
Vamos a ver cómo trabajaremos con el primer número impar. Todos los demás impares se trabajan igual.
En la celda A4 escribiremos la función =EXTRAE($A$2;1;1) esto lo que nos hará será extraer del número de la tarjeta, el valor que se encuentra en la primera posición y que solo ocupa una posición, con lo que obtendremos el valor 4
En la celda B4 calcularemos la multiplicación de este valor por 2, con lo que la función sería =A4*2 en este caso obtendremos un 8, pero debemos estar preparados por si ese valor en lugar de un dígito, tiene dos y actuar en consecuencia.
En la celda C4 introduciremos la siguiente función =SI(LARGO(B4)=1;B4;EXTRAE(B4;1;1)+EXTRAE(B4;2;1)) utilizamos la función SI() para preguntar si el largo del valor que hay en la celda B4 es 1, con lo que en caso afirmativo mostraremos directamente el valor de esa celda, pero en caso de no ser así, lo que haremos será coger el primer dígito (volveremos a utilizar la función EXTRAE()) y lo sumaremos al segundo dígito.
En este caso nos seguiremos quedando con un 8, pero si por ejemplo el número de la celda A4, fuera un 9, la multiplicación nos hubiera devuelto 18, con lo que el resultado final debería ser la suma de 1 + 8
Bien, ahora en las filas 5 y consecutivas podríamos calcular el resto de valores. Lo único que en las celdas A5, A6, A7… deberemos indicar que el valor con el que queremos trabajar es la siguiente posición impar del número de la tarjeta. Así por ejemplo la función de la celda A5 sería =EXTRAE($A$2;3;1)
Ahora y hemos visto, como extraer el primer valor con el que debemos trabajar, pero para poder hacerlo hemos necesitado 3 celdas, veamos ahora como poder unificarlo todo en una sola celda. Unificando los cálculos anteriores nos quedaría una función como esta: =SI(LARGO(EXTRAE($A$2;1;1)*2)=1;EXTRAE($A$2;1;1)*2;
EXTRAE(EXTRAE($A$2;1;1)*2;1;1)+EXTRAE(EXTRAE($A$2;1;1)*2;2;1))
Lo único que hemos hecho ha sido sustituir las referencias a las celdas A4 y B4 por el contenido de lo que hay en cada una de ellas.
La fórmula final que nos calcularía todos los dígitos que están en posiciones impares, los multiplicaría por dos y haría el cálculo según si el resultado tiene 1 o dos dígitos sería:
=SI(LARGO(EXTRAE(A2;1;1)*2)=1;EXTRAE(A2;1;1)*2;EXTRAE(EXTRAE(A2;1;1)*2;1;1)+EXTRAE(EXTRAE(A2;1;1)*2;2;1))+
SI(LARGO(EXTRAE(A2;3;1)*2)=1;EXTRAE(A2;3;1)*2;EXTRAE(EXTRAE(A2;3;1)*2;1;1)+EXTRAE(EXTRAE(A2;3;1)*2;2;1))+
SI(LARGO(EXTRAE(A2;5;1)*2)=1;EXTRAE(A2;5;1)*2;EXTRAE(EXTRAE(A2;5;1)*2;1;1)+EXTRAE(EXTRAE(A2;5;1)*2;2;1))+
SI(LARGO(EXTRAE(A2;7;1)*2)=1;EXTRAE(A2;7;1)*2;EXTRAE(EXTRAE(A2;7;1)*2;1;1)+EXTRAE(EXTRAE(A2;7;1)*2;2;1))+
SI(LARGO(EXTRAE(A2;9;1)*2)=1;EXTRAE(A2;9;1)*2;EXTRAE(EXTRAE(A2;9;1)*2;1;1)+EXTRAE(EXTRAE(A2;9;1)*2;2;1))+
SI(LARGO(EXTRAE(A2;11;1)*2)=1;EXTRAE(A2;11;1)*2;EXTRAE(EXTRAE(A2;11;1)*2;1;1)+EXTRAE(EXTRAE(A2;11;1)*2;2;1))+
SI(LARGO(EXTRAE(A2;13;1)*2)=1;EXTRAE(A2;13;1)*2;EXTRAE(EXTRAE(A2;13;1)*2;1;1)+EXTRAE(EXTRAE(A2;13;1)*2;2;1))+
SI(LARGO(EXTRAE(A2;15;1)*2)=1;EXTRAE(A2;15;1)*2;EXTRAE(EXTRAE(A2;15;1)*2;1;1)+EXTRAE(EXTRAE(A2;15;1)*2;2;1))
El resultado de esta operación con el número de la tarjeta que estamos utilizando como ejemplo debería ser 49
Ahora solo deberemos sumar los valores que hay en las posiciones pares.
Veamos cómo conseguir el primer valor de la primera posición par. EXTRAE(A2;2;1) hemos utilizado nuevamente la función EXTRAE() para coger un dígito que se encuentra en la posición 2
Pues bien para sumar todos los valores que hay en las posiciones pares podremos hacerlo utilizando esta función: =EXTRAE(A2;2;1)+EXTRAE(A2;4;1)+EXTRAE(A2;6;1)+EXTRAE(A2;8;1)+
EXTRAE(A2;10;1)+EXTRAE(A2;12;1)+EXTRAE(A2;14;1)+EXTRAE(A2;16;1) y podemos unirlo al final de la función que ya hemos escrito anteriormente quedando de la siguiente forma:
=SI(LARGO(EXTRAE(A2;1;1)*2)=1;EXTRAE(A2;1;1)*2;EXTRAE(EXTRAE(A2;1;1)*2;1;1)+EXTRAE(EXTRAE(A2;1;1)*2;2;1))+
SI(LARGO(EXTRAE(A2;3;1)*2)=1;EXTRAE(A2;3;1)*2;EXTRAE(EXTRAE(A2;3;1)*2;1;1)+EXTRAE(EXTRAE(A2;3;1)*2;2;1))+
SI(LARGO(EXTRAE(A2;5;1)*2)=1;EXTRAE(A2;5;1)*2;EXTRAE(EXTRAE(A2;5;1)*2;1;1)+EXTRAE(EXTRAE(A2;5;1)*2;2;1))+
SI(LARGO(EXTRAE(A2;7;1)*2)=1;EXTRAE(A2;7;1)*2;EXTRAE(EXTRAE(A2;7;1)*2;1;1)+EXTRAE(EXTRAE(A2;7;1)*2;2;1))+
SI(LARGO(EXTRAE(A2;9;1)*2)=1;EXTRAE(A2;9;1)*2;EXTRAE(EXTRAE(A2;9;1)*2;1;1)+EXTRAE(EXTRAE(A2;9;1)*2;2;1))+
SI(LARGO(EXTRAE(A2;11;1)*2)=1;EXTRAE(A2;11;1)*2;EXTRAE(EXTRAE(A2;11;1)*2;1;1)+EXTRAE(EXTRAE(A2;11;1)*2;2;1))+
SI(LARGO(EXTRAE(A2;13;1)*2)=1;EXTRAE(A2;13;1)*2;EXTRAE(EXTRAE(A2;13;1)*2;1;1)+EXTRAE(EXTRAE(A2;13;1)*2;2;1))+
SI(LARGO(EXTRAE(A2;15;1)*2)=1;EXTRAE(A2;15;1)*2;EXTRAE(EXTRAE(A2;15;1)*2;1;1)+EXTRAE(EXTRAE(A2;15;1)*2;2;1))+
EXTRAE(A2;2;1)+EXTRAE(A2;4;1)+EXTRAE(A2;6;1)+EXTRAE(A2;8;1)+
EXTRAE(A2;10;1)+EXTRAE(A2;12;1)+EXTRAE(A2;14;1)+EXTRAE(A2;16;1)
El valor que obtendremos será 90 con este ejemplo.
Si esta gran función la hemos introducido en la celda A4 en la B4 (por ejemplo) podemos calcular el residuo para ver si es 0, con lo que simplemente deberemos introducir la función =RESIDUO(A4;10)
En este caso nos devolverá un 0 con lo que el número de la tarjeta es correcto. Si queremos podemos incluir la función RESIDUO() en la gran función que hemos escrito para así no seguir dependiendo de otras celdas intermedias. La función final quedaría así…
=RESIDUO(SI(LARGO(EXTRAE($A$2;1;1)*2)=1;EXTRAE($A$2;1;1)*2;EXTRAE(EXTRAE($A$2;1;1)*2;1;1)+EXTRAE(EXTRAE($A$2;1;1)*2;2;1))
+SI(LARGO(EXTRAE($A$2;3;1)*2)=1;EXTRAE($A$2;3;1)*2;EXTRAE(EXTRAE($A$2;3;1)*2;1;1)+EXTRAE(EXTRAE($A$2;3;1)*2;2;1))+
SI(LARGO(EXTRAE($A$2;5;1)*2)=1;EXTRAE($A$2;5;1)*2;EXTRAE(EXTRAE($A$2;5;1)*2;1;1)+EXTRAE(EXTRAE($A$2;5;1)*2;2;1))+
SI(LARGO(EXTRAE($A$2;7;1)*2)=1;EXTRAE($A$2;7;1)*2;EXTRAE(EXTRAE($A$2;7;1)*2;1;1)+EXTRAE(EXTRAE($A$2;7;1)*2;2;1))+
SI(LARGO(EXTRAE($A$2;9;1)*2)=1;EXTRAE($A$2;9;1)*2;EXTRAE(EXTRAE($A$2;9;1)*2;1;1)+EXTRAE(EXTRAE($A$2;9;1)*2;2;1))+
SI(LARGO(EXTRAE($A$2;11;1)*2)=1;EXTRAE($A$2;11;1)*2;EXTRAE(EXTRAE($A$2;11;1)*2;1;1)+EXTRAE(EXTRAE($A$2;11;1)*2;2;1))+
SI(LARGO(EXTRAE($A$2;13;1)*2)=1;EXTRAE($A$2;13;1)*2;EXTRAE(EXTRAE($A$2;13;1)*2;1;1)+EXTRAE(EXTRAE($A$2;13;1)*2;2;1))+
SI(LARGO(EXTRAE($A$2;15;1)*2)=1;EXTRAE($A$2;15;1)*2;EXTRAE(EXTRAE($A$2;15;1)*2;1;1)+EXTRAE(EXTRAE($A$2;15;1)*2;2;1))+
EXTRAE(A2;2;1)+EXTRAE(A2;4;1)+EXTRAE(A2;6;1)+EXTRAE(A2;8;1)+
EXTRAE(A2;10;1)+EXTRAE(A2;12;1)+EXTRAE(A2;14;1)+EXTRAE(A2;16;1);10)
Ahora sí, con esta función podemos saber si el número de la tarjeta es correcto o no lo es, recuerda que si la función nos devuelve un 0 será una numeración correcta, mientras que si nos devuelve cualquier otro número la numeración será incorrecta.
En este tipo de prácticas las funciones son muy grandes, pero siempre recuerda atacar el problema paso a paso para conseguir un resultado idóneo.
Deja una respuesta