Excel - valor a texto y viceversa

   
Vista:

valor a texto y viceversa

Publicado por Javier Espinoza (1 intervención) el 25/07/2008 18:24:15
Hola:
Necesito que alguien me ayude a transformar los valores a texto usando alguna funcion de excell. Por ejemplo: 33 --> fx(33)= treinta y tres y viceversa. Se los agradezco.

Javier Espinoza
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:valor a texto y viceversa

Publicado por Luis Fernando (805 intervenciones) el 26/07/2008 01:44:05
Usa el siguiente código para pasar de número a TEXTO

Function letra(ByVal n As Double)

Dim Largo As Long
Dim i As Long
Dim Numero As Long
Dim Centavos As Long

letra = ""
Centavos = Round(100 * (n - Int(n)), 0)

On Error Resume Next
Largo = Int(Application.Log10(n) / 3)

For i = Largo To 0 Step -1
Numero = Int(n / 10 ^ (i * 3))
n = n - Numero * 10 ^ (i * 3)
If Numero > 0 Then
Select Case Numero
Case 1
letra = letra & Choose(i + 1, "un", "mil ", "un millón ", "un billón ", "un trillón")
Case Else
letra = letra & Matricial(Int(Numero)) & _
Choose(i + 1, "", " mil ", " millones ", " billones ", " trillones")
End Select
End If
Next i
letra = letra & " " & IIf(Centavos > 0, "pesos " & Format(Centavos, "00") & "/100 M.L.", " pesos 00/100 M.L.")
letra = UCase(Trim(letra))


End Function

Function Matricial(ByVal Valor As Long) As String
Dim Unidades, Decenas, DecenasOtr
Dim n As Long
Dim UNIT As Long, DEC As Long, CIE As Long

Unidades = Array("", "un", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve", "diez", "once", "doce", _
"trece", "catorce", "quince", "dieciseis", "diecisiete", "dieciocho", "diecinueve")
Decenas = Array("", "diez", "veinti", "treinta y ", "cuarenta y ", "cincuenta y ", "sesenta y ", _
"setenta y ", "ochenta y ", "noventa y ")
DecenasOtr = Array("", "diez", "veinte", "treinta", "cuarenta", _
"cincuenta", "sesenta", "setenta", "ochenta", "noventa")

Matricial = ""
n = Valor

CIE = n 100 '
If CIE > 0 Then
If n / 100 = 1 Then
Matricial = "cien"
Exit Function
End If
Select Case CIE
Case 1
Matricial = "ciento "
Case 2
Matricial = "doscientos "
Case 3
Matricial = "trescientos "
Case 4
Matricial = "cuatrocientos "
Case 5
Matricial = "quinientos "
Case 6
Matricial = "seiscientos "
Case 7
Matricial = "setecientos "
Case 8
Matricial = "ochocientos "
Case 9
Matricial = "novecientos "

Case Else
Matricial = Matricial & Matricial(Int(CIE)) & " cientos "
End Select
End If
n = n - CIE * 100
If n < 20 Then
DEC = n
Matricial = Matricial & Unidades(DEC)
Else
Select Case n Mod 10
Case 0
DEC = n 10
Matricial = Matricial & DecenasOtr(DEC)
UNIT = n - DEC * 10
Matricial = Trim(Matricial & Unidades(UNIT))
Case Else
DEC = n 10
Matricial = Matricial & Decenas(DEC)
UNIT = n - DEC * 10
Matricial = Trim(Matricial & Unidades(UNIT))
End Select
End If
Matricial = (Trim(Matricial))

End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar