Convertir valor numérico a letras
Puedes ayudarme en lo siguiente:
Tengo Este Valor en un Campo ($1200)
Convertir $1200 Este Valor A Letras
Mil Docientos Pesos
Si tines la formiula en access-2000 y en excel seria fantástico...
Tengo Este Valor en un Campo ($1200)
Convertir $1200 Este Valor A Letras
Mil Docientos Pesos
Si tines la formiula en access-2000 y en excel seria fantástico...
1 respuesta
Respuesta de oscarlmv
1
1
Tener la fórmula como tal no ta tengo, pero en un rato puedo hacértela. Me pongo con ello y en cuanto me contestes a unas dudillas tendrás la solución.
Solo tengo una duda que necesito que me aclares:
$1200 son Mil Doscientos pesos.
1250,25 ¿Son Mil Doscientos pesos con Veticinco? ¿Mil Doscientos pesos y Venticinco centavos? ...
Ponme algún ejemplo más con y si decimales para ceñirme a tu caso (soy de España y aquí no conocemos como se trata esa moneda). Ademas, concretamente si partes sólo de un numero
1200
O tiene realmente el signo de dollar delante
$1200
Solo tengo una duda que necesito que me aclares:
$1200 son Mil Doscientos pesos.
1250,25 ¿Son Mil Doscientos pesos con Veticinco? ¿Mil Doscientos pesos y Venticinco centavos? ...
Ponme algún ejemplo más con y si decimales para ceñirme a tu caso (soy de España y aquí no conocemos como se trata esa moneda). Ademas, concretamente si partes sólo de un numero
1200
O tiene realmente el signo de dollar delante
$1200
Necesito que me contestes a lo que te pregunte para poderte ayudar:
- ¿No utilizáis decimales?
- ¿Lleva el signo $ delante del numero o sólo tienes el numero sin símbolo $ a la hora de formatear?
- ¿No utilizáis decimales?
- ¿Lleva el signo $ delante del numero o sólo tienes el numero sin símbolo $ a la hora de formatear?
Hola Oscar ...
Es sin centavos, y es en pesos
Soy colombiano,
$1.250 SON: DOS MIL DOCIENTOS CINCUENTA PESOS,
Es sin centavos, y es en pesos
Soy colombiano,
$1.250 SON: DOS MIL DOCIENTOS CINCUENTA PESOS,
Siento no haber podido contestar antes, pero ademas de haber estado fuera un tiempo por trabajo, he andado un poco liadillo a la vuelta.
Respecto a lo que me preguntabas, te envío una función que he creado para que haga exactamente lo que tu quieres. No está depurada al 100 %, pero al menos te puede servir de base para lo que pretendías conseguir.
A continuación tienes el código. Como veras es una función a la que le debes pasar como parámetros el importe a convertir y el tipo de moneda de ese importe, y la función te devolverá el texto correspondiente.
Un saludo y ya sabes donde estoy si tienes alguna duda.
Suerte en tu desarrollo!
Óscar L.M.V.
--- Codigo
Public Function ImporteLetras(Importe As Double, Moneda As String) As String
Dim VariableFormato As String
Dim Traducir As String
Dim IndiceDigito As Integer
Dim ImporteLetrasTmp As String
Dim Contador As Integer
Contador = 0
VariableFormato = Format$(Importe, "########0")
If VariableFormato = "0" Then
ImporteLetrasTmp = "Cero" & " " & Moneda
Exit Function
End If
Do While VariableFormato <> ""
If Len(VariableFormato) > 3 Then
Traducir = Format$(Mid$(VariableFormato, (Len(VariableFormato) - 3) + 1, 3), "000")
VariableFormato = Mid$(VariableFormato, 1, Len(VariableFormato) - 3)
Else
Traducir = Format$(VariableFormato, "000")
VariableFormato = ""
End If
ImporteLetrasTmp = ""
For IndiceDigito = 1 To 3
Select Case Mid$(Traducir, IndiceDigito, 1)
Case 1
Select Case IndiceDigito
Case 1
ImporteLetrasTmp = ImporteLetrasTmp & IIf(Mid$(Traducir, 2, 2) = "00", ImporteLetrasTmp & "cien ", ImporteLetrasTmp & "ciento ")
Case 2
ImporteLetrasTmp = IIf(Mid$(Traducir, 3, 1) = "0", ImporteLetrasTmp & "diez ", ImporteLetrasTmp = "dieci")
Case 3
ImporteLetrasTmp = ImporteLetrasTmp & "uno "
End Select
Case 2
Select Case IndiceDigito
Case 1
ImporteLetrasTmp = ImporteLetrasTmp & "doscientos "
Case 2
ImporteLetrasTmp = IIf(Mid$(Traducir, 3, 1) = "0", ImporteLetrasTmp & "veinte ", ImporteLetrasTmp & "venti")
Case 3
ImporteLetrasTmp = ImporteLetrasTmp & "dos "
End Select
Case 3
Select Case IndiceDigito
Case 1
ImporteLetrasTmp = ImporteLetrasTmp & "trescientos "
Case 2
ImporteLetrasTmp = IIf(Mid$(Traducir, 3, 1) = "0", ImporteLetrasTmp & "treinta ", ImporteLetrasTmp & "treinta y ")
Case 3
ImporteLetrasTmp = ImporteLetrasTmp & "tres "
End Select
Case 4
Select Case IndiceDigito
Case 1
ImporteLetrasTmp = ImporteLetrasTmp & "cuatrocientos "
Case 2
ImporteLetrasTmp = IIf(Mid$(Traducir, 3, 1) = "0", ImporteLetrasTmp & "cuarenta ", ImporteLetrasTmp & "cuarenta y ")
Case 3
ImporteLetrasTmp = ImporteLetrasTmp & "cuatro "
End Select
Case 5
Select Case IndiceDigito
Case 1
ImporteLetrasTmp = ImporteLetrasTmp & "quinientos "
Case 2
ImporteLetrasTmp = IIf(Mid$(Traducir, 3, 1) = "0", ImporteLetrasTmp & "cincuenta ", ImporteLetrasTmp & "cincuenta y ")
Case 3
ImporteLetrasTmp = ImporteLetrasTmp & "cinco "
End Select
Case 6
Select Case IndiceDigito
Case 1
ImporteLetrasTmp = ImporteLetrasTmp & "seiscientos "
Case 2
ImporteLetrasTmp = IIf(Mid$(Traducir, 3, 1) = "0", ImporteLetrasTmp & "sesenta ", ImporteLetrasTmp & "sesenta y ")
Case 3
ImporteLetrasTmp = ImporteLetrasTmp & "seis "
End Select
Case 7
Select Case IndiceDigito
Case 1
ImporteLetrasTmp = ImporteLetrasTmp & "setecientos "
Case 2
ImporteLetrasTmp = IIf(Mid$(Traducir, 3, 1) = "0", ImporteLetrasTmp & "setenta ", ImporteLetrasTmp & "setenta y ")
Case 3
ImporteLetrasTmp = ImporteLetrasTmp & "siete "
End Select
Case 8
Select Case IndiceDigito
Case 1
ImporteLetrasTmp = ImporteLetrasTmp & "ocho "
Case 2
ImporteLetrasTmp = IIf(Mid$(Traducir, 3, 1) = "0", ImporteLetrasTmp & "ochenta ", ImporteLetrasTmp & "ochenta y ")
Case 3
ImporteLetrasTmp = ImporteLetrasTmp & "ocho "
End Select
Case 9
Select Case IndiceDigito
Case 1
ImporteLetrasTmp = ImporteLetrasTmp & "novecientos "
Case 2
ImporteLetrasTmp = IIf(Mid$(Traducir, 3, 1) = "0", ImporteLetrasTmp & "noventa ", ImporteLetrasTmp & "noventa y ")
Case 3
ImporteLetrasTmp = ImporteLetrasTmp & "nueve "
End Select
End Select
Next IndiceDigito
Contador = Contador + 1
Select Case Contador
Case 1
ImporteLetras = ImporteLetrasTmp
Case 2, 4
If Trim$(ImporteLetrasTmp) = "uno" Then ImporteLetrasTmp = ""
ImporteLetras = ImporteLetrasTmp & "mil " & ImporteLetras
Case 3
If Trim$(ImporteLetrasTmp) = "uno" Then
ImporteLetras = "un millon " & ImporteLetras
Else
ImporteLetras = ImporteLetrasTmp & "millones " & ImporteLetras
End If
Case 5
If Trim$(ImporteLetrasTmp) = "uno" Then
ImporteLetras = "un billon " & ImporteLetras
Else
ImporteLetras = ImporteLetrasTmp & "billones " & ImporteLetras
End If
End Select
Loop
ImporteLetras = ImporteLetras & " " & Moneda
End Function
Respecto a lo que me preguntabas, te envío una función que he creado para que haga exactamente lo que tu quieres. No está depurada al 100 %, pero al menos te puede servir de base para lo que pretendías conseguir.
A continuación tienes el código. Como veras es una función a la que le debes pasar como parámetros el importe a convertir y el tipo de moneda de ese importe, y la función te devolverá el texto correspondiente.
Un saludo y ya sabes donde estoy si tienes alguna duda.
Suerte en tu desarrollo!
Óscar L.M.V.
--- Codigo
Public Function ImporteLetras(Importe As Double, Moneda As String) As String
Dim VariableFormato As String
Dim Traducir As String
Dim IndiceDigito As Integer
Dim ImporteLetrasTmp As String
Dim Contador As Integer
Contador = 0
VariableFormato = Format$(Importe, "########0")
If VariableFormato = "0" Then
ImporteLetrasTmp = "Cero" & " " & Moneda
Exit Function
End If
Do While VariableFormato <> ""
If Len(VariableFormato) > 3 Then
Traducir = Format$(Mid$(VariableFormato, (Len(VariableFormato) - 3) + 1, 3), "000")
VariableFormato = Mid$(VariableFormato, 1, Len(VariableFormato) - 3)
Else
Traducir = Format$(VariableFormato, "000")
VariableFormato = ""
End If
ImporteLetrasTmp = ""
For IndiceDigito = 1 To 3
Select Case Mid$(Traducir, IndiceDigito, 1)
Case 1
Select Case IndiceDigito
Case 1
ImporteLetrasTmp = ImporteLetrasTmp & IIf(Mid$(Traducir, 2, 2) = "00", ImporteLetrasTmp & "cien ", ImporteLetrasTmp & "ciento ")
Case 2
ImporteLetrasTmp = IIf(Mid$(Traducir, 3, 1) = "0", ImporteLetrasTmp & "diez ", ImporteLetrasTmp = "dieci")
Case 3
ImporteLetrasTmp = ImporteLetrasTmp & "uno "
End Select
Case 2
Select Case IndiceDigito
Case 1
ImporteLetrasTmp = ImporteLetrasTmp & "doscientos "
Case 2
ImporteLetrasTmp = IIf(Mid$(Traducir, 3, 1) = "0", ImporteLetrasTmp & "veinte ", ImporteLetrasTmp & "venti")
Case 3
ImporteLetrasTmp = ImporteLetrasTmp & "dos "
End Select
Case 3
Select Case IndiceDigito
Case 1
ImporteLetrasTmp = ImporteLetrasTmp & "trescientos "
Case 2
ImporteLetrasTmp = IIf(Mid$(Traducir, 3, 1) = "0", ImporteLetrasTmp & "treinta ", ImporteLetrasTmp & "treinta y ")
Case 3
ImporteLetrasTmp = ImporteLetrasTmp & "tres "
End Select
Case 4
Select Case IndiceDigito
Case 1
ImporteLetrasTmp = ImporteLetrasTmp & "cuatrocientos "
Case 2
ImporteLetrasTmp = IIf(Mid$(Traducir, 3, 1) = "0", ImporteLetrasTmp & "cuarenta ", ImporteLetrasTmp & "cuarenta y ")
Case 3
ImporteLetrasTmp = ImporteLetrasTmp & "cuatro "
End Select
Case 5
Select Case IndiceDigito
Case 1
ImporteLetrasTmp = ImporteLetrasTmp & "quinientos "
Case 2
ImporteLetrasTmp = IIf(Mid$(Traducir, 3, 1) = "0", ImporteLetrasTmp & "cincuenta ", ImporteLetrasTmp & "cincuenta y ")
Case 3
ImporteLetrasTmp = ImporteLetrasTmp & "cinco "
End Select
Case 6
Select Case IndiceDigito
Case 1
ImporteLetrasTmp = ImporteLetrasTmp & "seiscientos "
Case 2
ImporteLetrasTmp = IIf(Mid$(Traducir, 3, 1) = "0", ImporteLetrasTmp & "sesenta ", ImporteLetrasTmp & "sesenta y ")
Case 3
ImporteLetrasTmp = ImporteLetrasTmp & "seis "
End Select
Case 7
Select Case IndiceDigito
Case 1
ImporteLetrasTmp = ImporteLetrasTmp & "setecientos "
Case 2
ImporteLetrasTmp = IIf(Mid$(Traducir, 3, 1) = "0", ImporteLetrasTmp & "setenta ", ImporteLetrasTmp & "setenta y ")
Case 3
ImporteLetrasTmp = ImporteLetrasTmp & "siete "
End Select
Case 8
Select Case IndiceDigito
Case 1
ImporteLetrasTmp = ImporteLetrasTmp & "ocho "
Case 2
ImporteLetrasTmp = IIf(Mid$(Traducir, 3, 1) = "0", ImporteLetrasTmp & "ochenta ", ImporteLetrasTmp & "ochenta y ")
Case 3
ImporteLetrasTmp = ImporteLetrasTmp & "ocho "
End Select
Case 9
Select Case IndiceDigito
Case 1
ImporteLetrasTmp = ImporteLetrasTmp & "novecientos "
Case 2
ImporteLetrasTmp = IIf(Mid$(Traducir, 3, 1) = "0", ImporteLetrasTmp & "noventa ", ImporteLetrasTmp & "noventa y ")
Case 3
ImporteLetrasTmp = ImporteLetrasTmp & "nueve "
End Select
End Select
Next IndiceDigito
Contador = Contador + 1
Select Case Contador
Case 1
ImporteLetras = ImporteLetrasTmp
Case 2, 4
If Trim$(ImporteLetrasTmp) = "uno" Then ImporteLetrasTmp = ""
ImporteLetras = ImporteLetrasTmp & "mil " & ImporteLetras
Case 3
If Trim$(ImporteLetrasTmp) = "uno" Then
ImporteLetras = "un millon " & ImporteLetras
Else
ImporteLetras = ImporteLetrasTmp & "millones " & ImporteLetras
End If
Case 5
If Trim$(ImporteLetrasTmp) = "uno" Then
ImporteLetras = "un billon " & ImporteLetras
Else
ImporteLetras = ImporteLetrasTmp & "billones " & ImporteLetras
End If
End Select
Loop
ImporteLetras = ImporteLetras & " " & Moneda
End Function
- Compartir respuesta
- Anónimo
ahora mismo