¿Cómo calcular el dígito de verificación del nit para Colombia?

Tengo el siguiente código para calcular el dígito de verificación del nit para colombia pero no se como usarlo para que me funcione utilizando dos textbox uno es donde se digita el nit y el otro donde arroja el resultado del DV :

Public Function DV(Nit)

Dim TipoRet, lnRetorno, Arreglo_PA(15), WSuma, WDato, WDig_Ver As Integer

TipoRet = VarType(Nit)

Select Case TipoRet

Case TipoRet = "C"

Nit = Trim(Nit)

Case TipoRet = "N" Or TipoRet = "Y"

Nit = Trim(Str(Nit))

End Select

Arreglo_PA(1) = 71

Arreglo_PA(2) = 67

Arreglo_PA(3) = 59

Arreglo_PA(4) = 53

Arreglo_PA(5) = 47

Arreglo_PA(6) = 43

Arreglo_PA(7) = 41

Arreglo_PA(8) = 37

Arreglo_PA(9) = 29

Arreglo_PA(10) = 23

Arreglo_PA(11) = 19

Arreglo_PA(12) = 17

Arreglo_PA(13) = 13

Arreglo_PA(14) = 7

Arreglo_PA(15) = 3

lnRetorno = 0

WDato = Right(Space(15) + Trim(Nit), 15)

WSuma = 0

WDig_Ver = 0

For i = 1 To 15

WSuma = WSuma + (Val(Mid(WDato, i, 1)) * Arreglo_PA(i))

Next i

WSuma = WSuma Mod 11

If WSuma = 0 Or WSuma = 1 Then

lnRetorno = WSuma

Else

lnRetorno = 11 - WSuma

End If

If TipoRet = "C" Then

DV = Trim(Str(lnRetorno))

Else

DV = lnRetorno

End If

End Function

La idea es que al darle clic al botón azul, aparezca el DV en la columna B

2 respuestas

Respuesta
1

Parece que se puede conseguir usando una fórmula.

Suponiendo que el NIT (9 dígitos, sin el dígito de control final) está en A1:

=ABS(((RESIDUO(SUMAPRODUCTO(1*EXTRAE(A1;FILA(INDIRECTO("1:9"));1);1*EXTRAE("413729231917130703";FILA(INDIRECTO("1:9"))*2-1;2));11)>2)*11)-RESIDUO(SUMAPRODUCTO(1*EXTRAE(A1;FILA(INDIRECTO("1:9"));1);1*EXTRAE("413729231917130703";FILA(INDIRECTO("1:9"))*2-1;2));11))

Quizás haya que sustituir los puntos y comas por el separador de listas que esté establecido en la configuración regional del equipo.

He hecho unas cuantas pruebas comparando los resultados devueltos por la fórmula con los obtenidos aquí y, en principio, parece que la fórmula calcula como debe. Pero habrá que hacer más pruebas.

Saludos_

¡Gracias! eres contador?

Sí, estudié contabilidad, pero la verdad es que llevo años dedicándome casi por completo al Excel.

Respuesta
1

Prueba directamente escribir en la celda B2 lo siguiente:

=DV(A1)

(Suponiendo que esa función la tienes en el mismo archivo)

Salu2

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas