Buenos días: Me podrían decir como puedo hacerle para cambiar un número a letras en excel. Gracias.
1 respuesta
Respuesta de sandra155
1
1
sandra155, Administracion de Redes de Computo SENA CCNA DISCOVERY 1,2,3,4
Crea un modulo enel editor de macros y pon este código Luego en la celda que quieras colocas =pesos(y el numero que quieras cambiar). Espero te sirva '------------ INICIO DE LA FUNCION PESOS----------------------------------- 'Function Pesos(Number As Single) As String 'Comentado el 27/10/2008: La siguiente línea corrige el error de los decimales 'en cantidades grandes, gracias a Any por la corrección. Function Pesos(Number As Double) As String Const MinNum = 1# Const MaxNum = 4294967295.99 Dim Numbers, Tenths, Result As String Numbers = array("cero", "un", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve", "diez", "once", "doce", "trece", "catorce", "quince", "dieciseis", "diecisiete", "dieciocho", "diecinueve") Tenths = Array("CERO", "DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", "SETENTA", "OCHENTA", "NOVENTA") If (Number >= MinNum) And (Number <= MaxNum) Then Result = RecurseNumber((Fix(Number))) If Round((Number - Fix(Number)) * 100) < 10 Then Result = Result + " PESOS" Else Result = Result + " " + Str(Round((Number - Fix(Number)) * 100)) + "PESOS" End If Else Result = "Error, verifique la cantidad." End If Pesos = Result End Function Function RecurseNumber(N As Long) As String Dim Numbers, Tenths Numbers = array("cero", "un", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve", "diez", "once", "doce", "trece", "catorce", "quince", "dieciseis", "diecisiete", "dieciocho", "diecinueve") Tenths = Array("CERO", "DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", "SETENTA", "OCHENTA", "NOVENTA") Hundrens = array("cero", "ciento", "doscientos", "trescientos", "cuatrocientos", "quinientos", "seiscientos", "setecientos", "ochocientos", "novecientos") Dim Result As String Select Case N Case 0 Result = "" Case 1 To 19 Result = Numbers(N) Case 20 To 99 If N Mod 10 <> 0 Then Result = Tenths(N \ 10) + " Y " + RecurseNumber(N Mod 10) Else Result = Tenths(N \ 10) + " " + RecurseNumber(N Mod 10) End If Case 100 To 999 If N \ 100 = 1 Then If N = 100 Then Result = "CIEN" + " " + RecurseNumber(N Mod 100) Else Result = Hundrens(N \ 100) + " " + RecurseNumber(N Mod 100) End If Else Result = Hundrens(N \ 100) + " " + RecurseNumber(N Mod 100) End If Case 1000 To 999999 Result = RecurseNumber(N \ 1000) + " MIL " + RecurseNumber(N Mod 1000) Case 1000000 To 1999999 Result = RecurseNumber(N \ 1000000) + " MILLON " + RecurseNumber(N Mod 1000000) Case 2000000 To 999999999 Result = RecurseNumber(N \ 1000000) + " MILLONES " + RecurseNumber(N Mod 1000000) Case 1000000000 To 4294967295# Result = RecurseNumber(N \ 1000000000) + " BILLONES " + RecurseNumber(N Mod 1000000000) End Select RecurseNumber = Result End Function