lunes, 15 de diciembre de 2008

Convertir números a letras en Excel

Con esta pequeña macro podrán convertir números en letras

Ejemplo

1002 --> mil dos

Para utilizarla ingresar el siguiente código en una macro. (En Excel presionar alt+F11 luego [Insertar] módulo y pegas lo siguiente)
Function num_letras(Numero As Double) As String
Dim Letras As String
Dim HuboCentavos As Boolean
Dim Decimales As Double
Decimales = Numero - Int(Numero)
Numero = Int(Numero)
Dim Numeros(90) As String
Numeros(0) = "cero"
Numeros(1) = "uno"
Numeros(2) = "dos"
Numeros(3) = "tres"
Numeros(4) = "cuatro"
Numeros(5) = "cinco"
Numeros(6) = "seis"
Numeros(7) = "siete"
Numeros(8) = "ocho"
Numeros(9) = "nueve"
Numeros(10) = "diez"
Numeros(11) = "once"
Numeros(12) = "doce"
Numeros(13) = "trece"
Numeros(14) = "catorce"
Numeros(15) = "quince"
Numeros(20) = "veinte"
Numeros(30) = "treinta"
Numeros(40) = "cuarenta"
Numeros(50) = "cincuenta"
Numeros(60) = "sesenta"
Numeros(70) = "setenta"
Numeros(80) = "ochenta"
Numeros(90) = "noventa"
Do
'*---> Centenas de Millón
If (Numero < 1000000000) And (Numero >= _
100000000) Then
If (Int(Numero / 100000000) = 1) And ((Numero _
- (Int(Numero / 100000000) * 100000000)) < _
1000000) Then
Letras = Letras & "cien millones "
Else
Select Case Int(Numero / 100000000)
Case 1
Letras = Letras & "ciento"
Case 5
Letras = Letras & "quinientos"
Case 7
Letras = Letras & "setecientos"
Case 9
Letras = Letras & "novecientos"
Case Else
Letras = Letras & Numeros(Int(Numero _
/ 100000000))
End Select
If (Int(Numero / 100000000) <> 1) And _
(Int(Numero / 100000000) <> 5) And (Int( _
Numero / 100000000) <> 7) And _
(Int(Numero / 100000000) <> 9) Then
Letras = Letras & "cientos "
Else
Letras = Letras & " "
End If
End If
Numero = Numero - (Int(Numero / 100000000) * _
100000000)
End If
'*---> Decenas de Millón
If (Numero < 100000000) And (Numero >= 10000000) _
Then
If Int(Numero / 1000000) < 16 Then
Letras = Letras & Numeros(Int(Numero / _
1000000))
Letras = Letras & " millones "
Numero = Numero - (Int(Numero / 1000000) _
* 1000000)
Else
Letras = Letras & Numeros(Int(Numero / _
10000000) * 10)
Numero = Numero - (Int(Numero / 10000000) _
* 10000000)
If Numero > 1000000 Then
Letras = Letras & " y "
End If
End If
End If
'*---> Unidades de Millón
If (Numero < 10000000) And (Numero >= 1000000) _
Then
If Int(Numero / 1000000) = 1 Then
Letras = Letras & " un millón "
Else
Letras = Letras & Numeros(Int(Numero _
/ 1000000))
Letras = Letras & " millones "
End If
Numero = Numero - (Int(Numero / 1000000) _
* 1000000)
End If
'*---> Centenas de Millar
If (Numero < 1000000) And (Numero >= 100000) Then
If (Int(Numero / 100000) = 1) And ((Numero _
- (Int(Numero / 100000) * 100000)) < 1000) Then
Letras = Letras & "cien mil "
Else
Select Case Int(Numero / 100000)
Case 1
Letras = Letras & "ciento"
Case 5
Letras = Letras & "quinientos"
Case 7
Letras = Letras & "setecientos"
Case 9
Letras = Letras & "novecientos"
Case Else
Letras = Letras & Numeros(Int(Numero _
/ 100000))
End Select
If (Int(Numero / 100000) <> 1) And (Int _
(Numero / 100000) <> 5) And (Int(Numero _
/ 100000) <> 7) And (Int(Numero / 100000) _
<> 9) Then
Letras = Letras & "cientos "
Else
Letras = Letras & " "
End If
End If
Numero = Numero - (Int(Numero / 100000) * _
100000)
End If
'*---> Decenas de Millar
If (Numero < 100000) And (Numero >= 10000) Then
If Int(Numero / 1000) < 16 Then
Letras = Letras & Numeros(Int(Numero _
/ 1000))
Letras = Letras & " mil "
Numero = Numero - (Int(Numero / 1000) * _
1000)
Else
Letras = Letras & Numeros(Int(Numero / _
10000) * 10)
Numero = Numero - (Int((Numero / 10000)) _
* 10000)
If Numero > 1000 Then
Letras = Letras & " y "
Else
Letras = Letras & " mil "
End If
End If
End If
'*---> Unidades de Millar
If (Numero < 10000) And (Numero >= 1000) Then
If Int(Numero / 1000) = 1 Then
Letras = Letras & "un"
Else
Letras = Letras & Numeros(Int(Numero / _
1000))
End If
Letras = Letras & " mil "
Numero = Numero - (Int(Numero / 1000) * 1000)
End If
'*---> Centenas
If (Numero < 1000) And (Numero > 99) Then
If (Int(Numero / 100) = 1) And ((Numero - _
(Int(Numero / 100) * 100)) < 1) Then
Letras = Letras & "cien "
Else
Select Case Int(Numero / 100)
Case 1
Letras = Letras & "ciento"
Case 5
Letras = Letras & "quinientos"
Case 7
Letras = Letras & "setecientos"
Case 9
Letras = Letras & "novecientos"
Case Else
Letras = Letras & Numeros(Int(Numero _
/ 100))
End Select
If (Int(Numero / 100) <> 1) And (Int _
(Numero / 100) <> 5) And (Int(Numero / _
100) <> 7) And (Int(Numero / 100) <> 9) _
Then
Letras = Letras & "cientos "
Else
Letras = Letras & " "
End If
End If
Numero = Numero - (Int(Numero / 100) * 100)
End If
'*---> Decenas
If (Numero < 100) And (Numero > 9) Then
If Numero < 16 Then
Letras = Letras & Numeros(Int(Numero))
Numero = Numero - Int(Numero)
Else
Letras = Letras & Numeros(Int((Numero _
/ 10)) * 10)
Numero = Numero - (Int((Numero / 10)) * 10)
If Numero > 0.99 Then
Letras = Letras & " y "
End If
End If
End If
'*---> Unidades
If (Numero < 10) And (Numero > 0.99) Then
Letras = Letras & Numeros(Int(Numero))
Numero = Numero - Int(Numero)
End If
Loop Until (Numero = 0)
'*---> Decimales
If (Decimales > 0) Then
Letras = Letras & " con "
Letras = Letras & Format(Decimales * 100, "00") _
& "/100 centavos"
End If
num_letras = Letras
End Function

Luego para llamarla desde una celda de Excel lo haces con la siguiente función "=num_letras(B11)", donde B11 es la dirección de celda que tiene el número.

Trucos Excel

1.- En la tecla F4 se almacena el último formato u orden realizada, por ejemplo al aplicar negrita a una celda, podremos movernos a otra celda y apretar la tecla F4 para aplicarle negrita también.

2.- Colocar hora actual: presionamos las teclas "CTRL" + ":" simultaneamente

viernes, 12 de diciembre de 2008

Utilizar Asistente(Assistant) de Excel

A veces resulta entretenido utilizar el asistente de Excel para enviar mensajes, alertas o ayuda al usuario


Algunos ejemplos de utilización del Assistant

1.- Para abrir el asistente
With Application.Assistant
.On = True
.Visible = True
.Animation = msoAnimationWritingNotingSomething
End With
Visualización:
2.- Para ocultarlo:
With Application.Assistant
.Visible = False
End With

3.-Para enviar un mensaje desde el asistente:
Application.Assistant.Visible = True
Application.ScreenUpdating = True
Application.Assistant.DoAlert _
"CasosResueltos.BlogSpot.com", _
"Gracias por tu visita", _
msoAlertButtonOK, _
msoAlertIconInfo, _
msoAlertDefaultFirst, _
msoAlertCancelFirst, False

Visualización:

Etas son solo algunas de las configuraciones del Assistant de Excel, espero ustedes descubran las demás.

Maximizar un UserForm

Un ejemplo siempre útil que nos permite maximizar un UserForm al tamaño de la pantalla del usuario.

Para esto tenemos dos opciones:

1.- Maximiza el UserForm a la zona que abarcan las celdas de Excel.
With UserForm1
.Width = Application.UsableWidth
.Height = Application.UsableHeight
End With
Application.WindowState = xlMaximized

2.- Maximiza el UserForm a la resolución de la pantalla.
With UserForm1
.Width = Application.Width
.Height = Application.Height
End With

miércoles, 10 de diciembre de 2008

Visualizar Rango de Celdas en una Imagen

En esta oportunidad veremos como visualizar un rango de celdas en una imagen y que está se actualice automáticamente

1.- Creamos un nuevo documento Excel


2.- Agregamos la barra de controles a la planilla, para ello ingresar al menu [ver][Cuadro de controles]


3.- En el cuadro de controles, seleccionamos e insertamos la imagen a la Hoja1


Así:


4.- Ahora modificaremos la función Fx de la imagen a "=Hoja2!A1:B10" (o el rango de celdas que deseemos), al ingresar la función, podremos visualizar el contenido de las celdas A1:B10 de la Hoja2.



Si vamos a la Hoja2



Y modificamos el aspecto


Y regresamos a la Hoja1, veremos que la imagen se actualizó automáticamente.


Saludos espero les sirva,

martes, 2 de diciembre de 2008

Sumar Horas en Excel

Cuando deseamos sumar horas en Excel por ejemplo:

Lo que debemos hacer es aplicar una simple función suma()


Pero el resultado obtenido no es el deseado, ya que, la suma de las horas del ejemplo es 36 horas y 59 minutos, pero, obtenemos 12 horas y 59 minutos, esto se debe a que Excel tiene por defecto el formato hh:mm, lo que significa que pierde 1 día o 24 horas.


Para poder visualizar la suma correcta de horas, debemos ir a formato de la celda en que realizamos la suma y agregar un formato de celda personalizada con la siguiente nomenclatura [h]:mm


Luego podremos visualizar la suma de horas correctamente.