Post by macaduHola amigos. En la columna "C" de una hoja Excel introduzco los 20 dígitos de
1234-5678-90-1234567890
como puedo comprobar que los números de cuenta son correctos.
Se ruega respuesta a nivel novato.
Gracias de antemano.
Un saludo.
--
macadu
Lo puedes hacer mediante VBA (la función no está escrita por mí pero ahora mismo no sé de dónde la saqué, así que no puedo atribuírsela a su autor):
Public Function CalcularDC(Banco, Cuenta)
Dim Pesos As Variant, n, S1, S2, R1, R2 As Integer
Pesos = Array(6, 3, 7, 9, 10, 5, 8, 4, 2, 1)
S1 = 0
S2 = 0
For n = 0 To 7
Debug.Print Val(Mid(Banco, 8 - n, 1)) * Pesos(n)
S1 = S1 + Val(Mid(Banco, 8 - n, 1)) * Pesos(n)
Next
For n = 0 To 9
S2 = S2 + Val(Mid(Cuenta, 10 - n, 1)) * Pesos(n)
Next
R1 = 11 - S1 Mod 11
R2 = 11 - S2 Mod 11
R1 = IIf(R1 > 9, 1 - R1 Mod 10, R1)
R2 = IIf(R2 > 9, 1 - R2 Mod 10, R2)
CalcularDC = R1 & R2
End Function
o mediante una "pequeña formulilla" :-))
=SI(11-RESIDUO(SUMAPRODUCTO(EXTRAE(A1;FILA(1:8);1)*(EXTRAE({"0408051009070306"};(FILA(1:8)*2)-1;2)));11)>9;1-(RESIDUO(11-RESIDUO(SUMAPRODUCTO(EXTRAE(A1;FILA(1:8);1)*(EXTRAE({"0408051009070306"};(FILA(1:8)*2)-1;2)));11);10));11-RESIDUO(SUMAPRODUCTO(EXTRAE(A1;FILA(1:8);1)*(EXTRAE({"0408051009070306"};(FILA(1:8)*2)-1;2)));11))&SI(11-RESIDUO(SUMAPRODUCTO(EXTRAE(B1;FILA(1:10);1)*(EXTRAE({"01020408051009070306"};(FILA(1:10)*2)-1;2)));11)>9;1-(RESIDUO(11-RESIDUO(SUMAPRODUCTO(EXTRAE(B1;FILA(1:10);1)*(EXTRAE({"01020408051009070306"};(FILA(1:10)*2)-1;2)));11);10));11-RESIDUO(SUMAPRODUCTO(EXTRAE(B1;FILA(1:10);1)*(EXTRAE({"01020408051009070306"};(FILA(1:10)*2)-1;2)));11))
Para que funcione la fórmula tal como está, es necesario que el código del banco y la sucursal estén (juntos) en la celda A1, y el código de la cuenta en B1, o sea:
A1 B1
012345678 01234567890
Un saludo.
Fernando Arroyo
MS MVP - Excel