Encontré una rutina por ahí en la web con algunos defectos, la arreglé y la pongo por si alguien la necesita. Hay que HABILITAR las macros, arrancar el editor VBasic (en excel Alt+F11). Ir a ThisWorkgroup, Click derecho, Insertar, módulo, y pegar el código que dejo abajo.
Se crea una función nueva poner por ejemplo en una celda: =num2let( 1235,54 )&"pesos"
y escribe en texto el número en cuestión.
Function num2let(importe)
If importe >= 1000000000 Then
num2let = "muygrande "
Exit Function
End If
If Int(importe) = 0 Then num2let = "cero "
If importe >= 1000000 Then
millones = Int(importe / 1000000)
importe = importe - millones * 1000000
If millones < 2 Then num2let = "un millón " Else num2let = num2letras(millones) + "millones "
End If
If importe >= 1000 Then num2let = num2let + num2letras(Int(importe / 1000)) + "mil "
num2let = num2let + num2letras(Int(importe - Int(importe / 1000) * 1000))
'centavos:
If importe <> Int(importe) Then
' (para que sea con letras descomentar próxima línea, y comentar la siguiente)
' num2let = num2let + "con " + num2letras((importe - Int(importe)) * 100) + "centavos "
num2let = num2let + "con " + CStr(Int((importe - Int(importe)) * 100)) + "/100 "
End If
End Function
Function num2letras(importe)
'Pasa de numero a letras, importes entre 0 y 999
If importe = 100 Then
num2letras = "cien "
Exit Function
End If
centena2 = Int(importe / 100)
Select Case centena2
Case 0: num2letras = ""
Case 1: num2letras = "ciento "
Case 2: num2letras = "doscientos "
Case 3: num2letras = "trescientos "
Case 4: num2letras = "cuatrocientos "
Case 5: num2letras = "quinientos "
Case 6: num2letras = "seiscientos "
Case 7: num2letras = "setecientos "
Case 8: num2letras = "ochocientos "
Case 9: num2letras = "novecientos "
End Select
decena2 = Int((importe - centena2 * 100) / 10)
unidad2 = Int((importe - centena2 * 100 - decena2 * 10))
If decena2 = 0 Then
Select Case unidad2
'Case 0: num2letras = num2letras + "cero "
Case 1: num2letras = num2letras + "un "
Case 2: num2letras = num2letras + "dos "
Case 3: num2letras = num2letras + "tres "
Case 4: num2letras = num2letras + "cuatro "
Case 5: num2letras = num2letras + "cinco "
Case 6: num2letras = num2letras + "seis "
Case 7: num2letras = num2letras + "siete "
Case 8: num2letras = num2letras + "ocho "
Case 9: num2letras = num2letras + "nueve "
End Select
Exit Function
End If
If decena2 = 1 Then
Select Case unidad2
Case 0: num2letras = num2letras + "diez "
Case 1: num2letras = num2letras + "once "
Case 2: num2letras = num2letras + "doce "
Case 3: num2letras = num2letras + "trece "
Case 4: num2letras = num2letras + "catorce "
Case 5: num2letras = num2letras + "quince "
Case 6: num2letras = num2letras + "dieciseis "
Case 7: num2letras = num2letras + "diecisiete "
Case 8: num2letras = num2letras + "dieciocho "
Case 9: num2letras = num2letras + "diecinueve "
End Select
Exit Function
End If
If decena2 = 2 Then
Select Case unidad2
Case 0: num2letras = num2letras + "veinte "
Case 1: num2letras = num2letras + "veintiun "
Case 2: num2letras = num2letras + "veintidos "
Case 3: num2letras = num2letras + "veintitres "
Case 4: num2letras = num2letras + "veinticuatro "
Case 5: num2letras = num2letras + "veinticinco "
Case 6: num2letras = num2letras + "veintiseis "
Case 7: num2letras = num2letras + "veintisiete "
Case 8: num2letras = num2letras + "veintiocho "
Case 9: num2letras = num2letras + "veintinueve "
End Select
Exit Function
End If
Select Case decena2
Case 3: num2letras = num2letras + "treinta "
Case 4: num2letras = num2letras + "cuarenta "
Case 5: num2letras = num2letras + "cincuenta "
Case 6: num2letras = num2letras + "sesenta "
Case 7: num2letras = num2letras + "setenta "
Case 8: num2letras = num2letras + "ochenta "
Case 9: num2letras = num2letras + "noventa "
End Select
Select Case unidad2
Case 1: num2letras = num2letras + "y un "
Case 2: num2letras = num2letras + "y dos "
Case 3: num2letras = num2letras + "y tres "
Case 4: num2letras = num2letras + "y cuatro "
Case 5: num2letras = num2letras + "y cinco "
Case 6: num2letras = num2letras + "y seis "
Case 7: num2letras = num2letras + "y siete "
Case 8: num2letras = num2letras + "y ocho "
Case 9: num2letras = num2letras + "y nueve "
End Select
End Function
Se crea una función nueva poner por ejemplo en una celda: =num2let( 1235,54 )&"pesos"
y escribe en texto el número en cuestión.
Function num2let(importe)
If importe >= 1000000000 Then
num2let = "muygrande "
Exit Function
End If
If Int(importe) = 0 Then num2let = "cero "
If importe >= 1000000 Then
millones = Int(importe / 1000000)
importe = importe - millones * 1000000
If millones < 2 Then num2let = "un millón " Else num2let = num2letras(millones) + "millones "
End If
If importe >= 1000 Then num2let = num2let + num2letras(Int(importe / 1000)) + "mil "
num2let = num2let + num2letras(Int(importe - Int(importe / 1000) * 1000))
'centavos:
If importe <> Int(importe) Then
' (para que sea con letras descomentar próxima línea, y comentar la siguiente)
' num2let = num2let + "con " + num2letras((importe - Int(importe)) * 100) + "centavos "
num2let = num2let + "con " + CStr(Int((importe - Int(importe)) * 100)) + "/100 "
End If
End Function
Function num2letras(importe)
'Pasa de numero a letras, importes entre 0 y 999
If importe = 100 Then
num2letras = "cien "
Exit Function
End If
centena2 = Int(importe / 100)
Select Case centena2
Case 0: num2letras = ""
Case 1: num2letras = "ciento "
Case 2: num2letras = "doscientos "
Case 3: num2letras = "trescientos "
Case 4: num2letras = "cuatrocientos "
Case 5: num2letras = "quinientos "
Case 6: num2letras = "seiscientos "
Case 7: num2letras = "setecientos "
Case 8: num2letras = "ochocientos "
Case 9: num2letras = "novecientos "
End Select
decena2 = Int((importe - centena2 * 100) / 10)
unidad2 = Int((importe - centena2 * 100 - decena2 * 10))
If decena2 = 0 Then
Select Case unidad2
'Case 0: num2letras = num2letras + "cero "
Case 1: num2letras = num2letras + "un "
Case 2: num2letras = num2letras + "dos "
Case 3: num2letras = num2letras + "tres "
Case 4: num2letras = num2letras + "cuatro "
Case 5: num2letras = num2letras + "cinco "
Case 6: num2letras = num2letras + "seis "
Case 7: num2letras = num2letras + "siete "
Case 8: num2letras = num2letras + "ocho "
Case 9: num2letras = num2letras + "nueve "
End Select
Exit Function
End If
If decena2 = 1 Then
Select Case unidad2
Case 0: num2letras = num2letras + "diez "
Case 1: num2letras = num2letras + "once "
Case 2: num2letras = num2letras + "doce "
Case 3: num2letras = num2letras + "trece "
Case 4: num2letras = num2letras + "catorce "
Case 5: num2letras = num2letras + "quince "
Case 6: num2letras = num2letras + "dieciseis "
Case 7: num2letras = num2letras + "diecisiete "
Case 8: num2letras = num2letras + "dieciocho "
Case 9: num2letras = num2letras + "diecinueve "
End Select
Exit Function
End If
If decena2 = 2 Then
Select Case unidad2
Case 0: num2letras = num2letras + "veinte "
Case 1: num2letras = num2letras + "veintiun "
Case 2: num2letras = num2letras + "veintidos "
Case 3: num2letras = num2letras + "veintitres "
Case 4: num2letras = num2letras + "veinticuatro "
Case 5: num2letras = num2letras + "veinticinco "
Case 6: num2letras = num2letras + "veintiseis "
Case 7: num2letras = num2letras + "veintisiete "
Case 8: num2letras = num2letras + "veintiocho "
Case 9: num2letras = num2letras + "veintinueve "
End Select
Exit Function
End If
Select Case decena2
Case 3: num2letras = num2letras + "treinta "
Case 4: num2letras = num2letras + "cuarenta "
Case 5: num2letras = num2letras + "cincuenta "
Case 6: num2letras = num2letras + "sesenta "
Case 7: num2letras = num2letras + "setenta "
Case 8: num2letras = num2letras + "ochenta "
Case 9: num2letras = num2letras + "noventa "
End Select
Select Case unidad2
Case 1: num2letras = num2letras + "y un "
Case 2: num2letras = num2letras + "y dos "
Case 3: num2letras = num2letras + "y tres "
Case 4: num2letras = num2letras + "y cuatro "
Case 5: num2letras = num2letras + "y cinco "
Case 6: num2letras = num2letras + "y seis "
Case 7: num2letras = num2letras + "y siete "
Case 8: num2letras = num2letras + "y ocho "
Case 9: num2letras = num2letras + "y nueve "
End Select
End Function


Comentario