Subido por ehuedav

funciones personalizadas

Anuncio
Funciones personalizadas de gran utilidad
A continuación les presento una lista de funciones personalizadas que pueden ser de gran
utilidad en el trabajo diario en Excel.
1. Extraer una palabra de una frase
Función publicada por Javier Duckelman puedes ver el blog de Javier aqui
Extraer la enésima palabra de una frase o cadena de texto
dentro de las funciones incorporadas Excel ofrece la función incorporada “Extrae” la cual
devuelve un texto de un largo determinado dentro de otra cadena de texto esta función tiene
como argumentos la cadena de texto y la posición inicial y la posición final del texto a extraer.
La función a continuación devuelve una palabra de un orden determinado dentro de una
cadena de texto:
Function extraer_palabra(frase As Range, palabra As Integer)
Dim arrFrase As Variant
arrFrase = Split(WorksheetFunction.Trim(frase), " ")
extraer_palabra = arrFrase(palabra - 1)
End Function
2. Extraer mas de una palabra de una frase
Función publicada por Javier Duckelman puedes ver el blog de Javier aqui
La función a continuación devuelve un número determinado de palabras a partir de la enésima
palabra en una frase.
El código de la función es:
Function extraer_palabra2(frase As Range, palabra1 As Integer, cuantas As Integer)
Dim arrFrase As Variant, iX As Long, temp
arrFrase = Split(WorksheetFunction.Trim(frase), " ")
extraer_palabra2 = arrFrase(palabra1 - 1)
For iX = palabra1 + 1 To palabra1 + cuantas - 1
extraer_palabra2 = extraer_palabra2 & " " & arrFrase(iX - 1)
Next iX
End Function
3. Ubicar una palabra dentro de una frase
Función que identifica si una palabra se encuentra en un texto, devuelve Verdadero / Falso
Function Palabraexacta(Text As String, Word As String) As Boolean
Palabraexacta = " " & UCase(Text) & " " Like "*[!A-Z]" & UCase(Word) & "[!A-Z]*"
End Function
4. Escribir un numero de letras
Función publicada por Adolfo Aparicio en la Web Excel Avanzado, por medio de esta función
transforma un numero en letras:
Public Function EnLetras(Valor, Optional ByVal Tipo As Byte = 1) As String 'funcion Principal '
If Not IsNumeric(Valor) Then
EnLetras = "¡ La referencia no es valor o... 'excede' la precisión !!!":
Exit Function
End If: Dim Moneda As String, Fracs As String, Cents As Integer
If Int(Abs(Valor)) = 1 Then Moneda = " nuevo sol" Else Moneda = " nuevos soles"
If Right(Letras(Abs(Int(Valor))), 6) = "illón " Or _
Right(Letras(Abs(Int(Valor))), 8) = "illones " Then Moneda = "de" & Moneda
Cents = Application.Round(Abs(Valor) - Int(Abs(Valor)), 2) * 100
If Cents = 1 Then Fracs = " centimo" Else Fracs = " centimos"
If Cents = 0 Then Fracs = "" Else Fracs = " con " & Letras(Cents) & Fracs
EnLetras = Letras(Int(Abs(Valor))) & Moneda & Fracs
If Valor < 0 Then EnLetras = "menos " & EnLetras
If Tipo = 2 Then EnLetras = UCase(EnLetras) ' TODO EN MAYUSCULAS '
If Tipo = 3 Then EnLetras = StrConv(EnLetras, vbProperCase) ' Todo Como Nombre Propio '
If Tipo = 4 Then EnLetras = UCase(Left(EnLetras, 1)) & Mid(EnLetras, 2) 'Primera letra en
mayuscula SOLAMENTE '
EnLetras = EnLetras
End Function
Private Function Letras(Valor) As String ' Función Auxiliar [uso 'exclusivo'de la funcion
'principal'] '
Select Case Int(Valor)
Case 0: Letras = "cero"
Case 1: Letras = "un"
Case 2: Letras = "dos"
Case 3: Letras = "tres"
Case 4: Letras = "cuatro"
Case 5: Letras = "cinco"
Case 6: Letras = "seis"
Case 7: Letras = "siete"
Case 8: Letras = "ocho"
Case 9: Letras = "nueve"
Case 10: Letras = "diez"
Case 11: Letras = "once"
Case 12: Letras = "doce"
Case 13: Letras = "trece"
Case 14: Letras = "catorce"
Case 15: Letras = "quince"
Case Is < 20: Letras = "dieci" & Letras(Valor - 10)
Case 20: Letras = "veinte"
Case Is < 30: Letras = "veinti" & Letras(Valor - 20)
Case 30: Letras = "treinta"
Case 40: Letras = "cuarenta"
Case 50: Letras = "cincuenta"
Case 60: Letras = "sesenta"
Case 70: Letras = "setenta"
Case 80: Letras = "ochenta"
Case 90: Letras = "noventa"
Case Is < 100: Letras = Letras(Int(Valor \ 10) * 10) & " y " & Letras(Valor Mod 10)
Case 100: Letras = "cien"
Case Is < 200: Letras = "ciento " & Letras(Valor - 100)
Case 200, 300, 400, 600, 800: Letras = Letras(Int(Valor \ 100)) & "cientos"
Case 500: Letras = "quinientos"
Case 700: Letras = "setecientos"
Case 900: Letras = "novecientos"
Case Is < 1000: Letras = Letras(Int(Valor \ 100) * 100) & " " & Letras(Valor Mod 100)
Case 1000: Letras = "mil"
Case Is < 2000: Letras = "mil " & Letras(Valor Mod 1000)
Case Is < 1000000: Letras = Letras(Int(Valor \ 1000)) & " mil"
If Valor Mod 1000 Then Letras = Letras & " " & Letras(Valor Mod 1000)
Case 1000000: Letras = "un millón "
Case Is < 2000000: Letras = "un millón " & Letras(Valor Mod 1000000)
Case Is < 1000000000000#: Letras = Letras(Int(Valor / 1000000)) & " millones "
If (Valor - Int(Valor / 1000000) * 1000000) _
Then Letras = Letras & Letras(Valor - Int(Valor / 1000000) * 1000000)
Case 1000000000000#: Letras = "un billón "
Case Is < 2000000000000#
Letras = "un billón " & Letras(Valor - Int(Valor / 1000000000000#) * 1000000000000#)
Case Else: Letras = Letras(Int(Valor / 1000000000000#)) & " billones "
If (Valor - Int(Valor / 1000000000000#) * 1000000000000#) _
Then Letras = Letras & " " & Letras(Valor - Int(Valor / 1000000000000#) * 1000000000000#)
End Select
Descargar