De números a letras en Ubuntu con OpenOffice

Una de las situaciones más habituales con la que nos encontramos aquellos que trabajamos con números, es la de tener que escribir una cifra en letras, es decir:

1.347.453 -> UN MILLÓN TRESCIENTOS CUARENTA Y SIETE MIL CUATROCIENTOS CINCUENTA Y TRES

Normalmente este tipo de operaciones las hacemos en una hoja de cálculo. Así que es muy interesante tener una función que se encargue de realizar tan tediosa operación, y tan propicia al error. Y es que es muy común equivocarse en este tipo de conversión tan sencilla

Pues la misión de este post, es la dejaros semejante función que programé ya hace unos años y que ha sido de gran ayuda a mas de uno:

Lo que tienes que hacer es copiar esta función en OpenOffice:

Herramientas > Macros > Organizar Macros > OpenOffice.org Basic …

y en la ventana que te aparece haces click en el botón “editar”, y pegas las líneas que ves a continuación.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
Function Lee_numero(Number)
Dim longit
Dim trios
Dim numero_leido
Dim parte_izquierda
Dim parte_derecha
Dim Value
Dim unidades(30)
Dim decenas(9)
Dim centenas(9)
unidades(0) = ""
unidades(1) = "uno"
unidades(2) = "dos"
unidades(3) = "tres"
unidades(4) = "cuatro"
unidades(5) = "cinco"
unidades(6) = "seis"
unidades(7) = "siete"
unidades(8) = "ocho"
unidades(9) = "nueve"
unidades(10) = "diez"
unidades(11) = "once"
unidades(12) = "doce"
unidades(13) = "trece"
unidades(14) = "catorce"
unidades(15) = "quince"
unidades(16) = "dieciseis"
unidades(17) = "diecisiete"
unidades(18) = "dieciocho"
unidades(19) = "diecinueve"
unidades(20) = "veinte"
unidades(21) = "veintiuno"
unidades(22) = "veintidos"
unidades(23) = "veintitres"
unidades(24) = "veinticuatro"
unidades(25) = "veinticinco"
unidades(26) = "veintiseis"
unidades(27) = "veintisiete"
unidades(28) = "veintiocho"
unidades(29) = "veintinueve"
unidades(30) = "treinta"
decenas(4) = "cuarenta"
decenas(5) = "cincuenta"
decenas(6) = "sesenta"
decenas(7) = "setenta"
decenas(8) = "ochenta"
decenas(9) = "noventa"
centenas(0) = ""
centenas(1) = "ciento"
centenas(2) = "doscientos"
centenas(3) = "trescientos"
centenas(4) = "cuatrocientos"
centenas(5) = "quinientos"
centenas(6) = "seiscientos"
centenas(7) = "setecientos"
centenas(8) = "ochocientos"
centenas(9) = "novecientos"
Value = Val(Number)
longit = Len(Number)
trios = longit / 3
Select Case longit
Case Is < 3
Select Case Value
Case Is < 31
numero_leido = unidades(Value)
Case 31 To 39
numero_leido = unidades(30) + " y " + unidades(Value - 30)
Case 40
numero_leido = decenas(4)
Case 41 To 49
numero_leido = decenas(4) + " y " + unidades(Value - 40)
Case 50
numero_leido = decenas(5)
Case 51 To 59
numero_leido = decenas(5) + " y " + unidades(Value - 50)
Case 60
numero_leido = decenas(6)
Case 61 To 69
numero_leido = decenas(6) + " y " + unidades(Value - 60)
Case 70
numero_leido = decenas(7)
Case 71 To 79
numero_leido = decenas(7) + " y " + unidades(Value - 70)
Case 80
numero_leido = decenas(8)
Case 81 To 89
numero_leido = decenas(8) + " y " + unidades(Value - 80)
Case 90
numero_leido = decenas(9)
Case 91 To 99
numero_leido = decenas(9) + " y " + unidades(Value - 90)
End Select
Case Is < 4
parte_izquierda = Left(Number, 1)
parte_derecha = Right(Number, 2)
If parte_derecha = "00" And parte_izquierda = "1" Then
numero_leido = "cien"
Else
numero_leido = centenas(Val(parte_izquierda)) + " " + Lee_numero(parte_derecha)
End If
Case Is < 7         parte_izquierda = Left(Number, longit - 3)         parte_derecha = Right(Number, 3) Select Case Val(parte_izquierda) Case Is = 0                 numero_leido = Lee_numero(parte_derecha) Case Is = 1                 numero_leido = "mil " + Lee_numero(parte_derecha) Case Is > 1
numero_leido = Lee_numero(parte_izquierda) + " mil " + Lee_numero(parte_derecha)
End Select
Case Is < 13         parte_izquierda = Left(Number, longit - 6)         parte_derecha = Right(Number, 6) Select Case Val(parte_izquierda) Case Is = 0                 numero_leido = Lee_numero(parte_derecha) Case Is = 1                 numero_leido = "un millón " + Lee_numero(parte_derecha) Case Is > 1
parte_izquierda = parte_izquierda
If Right(parte_izquierda, 1) = "1" Then
numero_leido = Left(Lee_numero(parte_izquierda), Len(Lee_numero(parte_izquierda)) - 1) + " millón " + Lee_numero(parte_derecha)
Else
numero_leido = Lee_numero(parte_izquierda) + " millones " + Lee_numero(parte_derecha)
End If
End Select
Case Is < 25         parte_izquierda = Left(Number, longit - 12)         parte_derecha = Right(Number, 12) Select Case Val(parte_izquierda) Case Is = 0                 numero_leido = Lee_numero(parte_derecha) Case Is = 1                 numero_leido = "un billón " + Lee_numero(parte_derecha) Case Is > 1
numero_leido = Lee_numero(parte_izquierda) + " billones " + Lee_numero(parte_derecha)
End Select
Case Is < 49         parte_izquierda = Left(Number, longit - 24)         parte_derecha = Right(Number, 24) Select Case Val(parte_izquierda) Case Is = 0                 numero_leido = Lee_numero(parte_derecha) Case Is = 1                 numero_leido = "un trillón " + Lee_numero(parte_derecha) Case Is > 1
numero_leido = Lee_numero(parte_izquierda) + " trillones " + Lee_numero(parte_derecha)
End Select
Case Is < 97         parte_izquierda = Left(Number, longit - 48)         parte_derecha = Right(Number, 48) Select Case Val(parte_izquierda) Case Is = 0                 numero_leido = Lee_numero(parte_derecha) Case Is = 1                 numero_leido = "un cuatrillón " + Lee_numero(parte_derecha) Case Is > 1
numero_leido = Lee_numero(parte_izquierda) + " cuatrillones " + Lee_numero(parte_derecha)
End Select
Case Is < 193         parte_izquierda = Left(Number, longit - 96)         parte_derecha = Right(Number, 96) Select Case Val(parte_izquierda) Case Is = 0                 numero_leido = Lee_numero(parte_derecha) Case Is = 1                 numero_leido = "un quintillón " + Lee_numero(parte_derecha) Case Is > 1
numero_leido = Lee_numero(parte_izquierda) + " quintillones " + Lee_numero(parte_derecha)
End Select
End Select
Lee_numero = UCase(numero_leido)
End Function

Si además quieres que la función te lea los decimales simplemente tendras que hacer algo como esto:

1
=LEE_NUMERO(ENTERO(A1))&" CON "&LEE_NUMERO(ENTERO((A1-ENTERO(A1))*100))

Donde A1 es la celda que contiene nuestro numerito.

Fuente

Dejar un comentario?

0 Comentarios.

Deje un comentario


NOTA - Puede usar estosHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Translate »