Beruflich Dokumente
Kultur Dokumente
com/que-es-excel-avanzado
Existe una gran cantidad de avisos de empleos en los que se requieren de un profesional con dominio de Excel o manejo de Excel avanzado. Cabe entonces preguntarse: Qu es dominar Excel? Qu es Excel avanzado?, Quienes publican y leen estos avisos, tienen claridad sobre lo que se exige? Excel est conformada por un conjunto de herramientas de propsito muy diverso, y muchas de ellas estn particularmente relacionadas con la gestin empresarial, pero tambin suele ser usado desde otras reas como la estadstica, las matemticas, la investigacin de operaciones, el anlisis de datos, clculo y anlisis financiero. Un conocimiento bsico de Excel implicara realizar las tareas ms sencillas, como por ejemplo: - Crear un libro de trabajo, insertar hojas, eliminar hojas, abrir y guardar archivos. - Uso del libro de trabajo con el Mouse y el teclado. - Usar los mens y algunos atajos de teclado. - Usar las funciones bsicas El uso de algunas funciones, hace necesario comprender el significado del clculo que se esta realizando, esto resulta particularmente notorio en el caso de las frmulas financieras. El uso de un considerable nmero de funciones puede considerarse como un dominio intermedio de Excel. El uso de tablas dinmicas para algunas instituciones es considerado como propio de Excel avanzado o de un dominio de Excel, sin embargo debido al uso generalizado y a la simplicidad con que estas son creadas, podemos sealar que en la actualidad esto correspondera ms bien a un dominio intermedio de Excel. Similar situacin ocurre con el uso de filtros.
En donde si no existe duda alguna, es que Excel Avanzado comprende el uso de Macros o VBA, es decir comprende el uso de un lenguaje de programacin para obtener soluciones a problemas mas complejos con los que nos podemos enfrentar en el da a da. El propsito de Excel Avanzado, y la utilidad del mismo radica en poder simplificar las labores diarias, automatizar todos aquellas operaciones que tienen que realizarse de forma frecuente, o realizar las labores que normalmente nos tomara una cantidad considerable de tiempo si las realizramos sin la ayuda de un programa, quiz la creacin del programa pueda tomarnos algo de tiempo cuando lo estemos creando, pero una vez creado no sera necesario invertir mas tiempo (salvo que se requiera alguna actualizacin), por lo que procesos que normalmente pueden tomar horas o das pueden realizarse en cuestin de segundos si disponemos de un buen programa.
Funciones en VBA
Existen diversas funciones en VBA o Macros que podran ser de mucha ayuda para las diversas tareas en las que nos veamos involucrados en resolver, en esta relacin tenemos un acercamiento a las funciones en VBA mas usuales que podramos llegar a emplear. A la fecha en la web no encontramos una relacin lo suficientemente exhaustiva de las funciones en VBA disponibles as que desde el blog hemos comenzado, paso a paso, a establecer nuestra propia relacin de funciones, prestando especial inters a los ejemplos de uso de cada funcin que desarrollemos, si desean que agreguemos alguna en particular o han encontrado alguna observacin sobre algunas de las funciones descritas, por favor avsennos a info@exel-avanzado.com a fin de realizar las revisiones y adecuaciones que sean necesarias. Debe tenerse en cuenta que estas funciones en VBA pueden emplearse desde cualquier parte del proyecto, es decir ya sea desde los mdulos, hojas, ThisWorkbook, y formularios. Algunas de las funciones en VBA revisadas: 1. Uso de WorksheetFunction.CountA 2. Funcin CINT 3. Funcin Mid para calificacin crediticia 4. Funcin Abs 5. Funcin Now en VBA 6. Funcin Formatpercent 7. Funcin DateAdd (Teora Nagele) 8. Funcin FileLen en VBA
9. Funcin IsEmpty en VBA 10. Funcin Len en VBA 11. Funcin Left 12. Funcin Space en BVA 13. Uso de WorksheetFunction.RandBetween 14. Funcin Rnd 15. Funcion IsNumeric 16. Funcin FormatCurrency en VBA 17. Funcin IsNull en VBA 18. Funcin Cbyte en VBA 19. Funcin StrConv 20. Funcin Replace 21. Funcin Val en VBA 22. Funcin CLng en VBA 23. Uso de WorksheetFunction.Vlookup 24. Funcin Cdec 25. Funcin "Choose" en VBA 26. Funcin CStr 27. Funcin CurDir 28. Funcin CVAR en VBA 29. Funcin InputBox en VBA 30. Funcin CCur en VBA 31. Funcin DateSerial en VBA 32. Funcin WeekdayName 33. Funcin LCase con VBA 34. Funcin ROUND 35. Funcin Sgn
36. Funcin Date 37. Funcin INT 38. Funcin DateDiff 39. Funcin CDate con VBA 40. Funcin Fix con VBA 41. Funcin LTrim 42. Funcin CHR 43. Funcin DateSerial 44. Funcion Cbool 45. Funcin TimeSerial 46. Funcion Ucase 47. Funcin InStr 48. Funcin Format 49. Funcin CDbl 50. Funcin IsDate 51. Funcin Asc 52. Funcin InStrRev 53. Uso de WorksheetFunction.CountA
54. 29/04/2013 by Cynthia Arroyo Arano | 0 comments 55. La funcin WorksheetFunction.CountA se usa para contar el nmero de celdas que
contienen datos en un rango o matriz. Un valor es todo tipo de informacin, incluidos texto vaco () y valores de error. No se considera un valor a las celdas vacas.
56. Si el argumento es una matriz o referencia, slo se utilizarn los valores de la
matriz o de la referencia. Se pasarn por alto las celdas vacas y los valores de texto de la matriz o de la referencia. 57. En caso no necesite contar valores lgicos, texto o valores de error, use la funcin Count. 58. En este Caso usaremos la lista de 30 alumnos del curso de Mercadeo en el cual usaremos CountA para ubicar el ltimo alumno de la lista de los alumnos que se han registrado en el curso y poder seguir registrando a otros alumnos de la clase.El
objetivo de esta funcin es que si un profesor tiene que registrar 70 alumnos y no se acuerda en que alumno se quedo , apretando el botn ubicar ultima celda puedes ir de frente a donde te quedaste. 59. Para ver la aplicacin en Excel se encuentra el siguiente archivo : 60. Uso de WorksheetFunction1
Funcin CINT
27/04/2013 by Miguel | 2 Comments
La funcin CInt convierte un decimal a un nmero entero.
La sintaxis de la funcin CInt es: CInt (expresin) Siendo expresin el valor que se desea convertir en un entero. Se aplica para Excel 2013, Excel 2011 para Mac, Excel 2010, Excel 2007, Excel 2003, Excel XP, Excel 2000 y slo se puede utilizar en cdigo de VBA. Si el entero del decimal es 0 o par: <=0.5; el resultado ser redondeado a la baja, en este caso 0. >0.5; el resultado ser redondeado a 1. Si el entero del decimal es impar: <3.5; el resultado ser redondeado a la baja, en este caso 3. >=3.5; el resultado ser redondeado a 4.
Ejemplo1:
Como vemos en este caso al decimal 748.7 la funcin Cint redondear a 749 por ser mayor a 748.5 Ejemplo2:
En este caso vemos que la funcin CInt redondea a la baja el decimal 517.25 a solamente 517, por no ser mayor o igual a 517.5. Ejemplo3:
24.5; es redondeado a la baja, en este caso 24 , aunque de haber sido 24.5000001 hubiese bastado para que sea redondeado a 25. Finalmente paso a mostrarles el cdigo vba del formulario: Private Sub CommandButton1_Click() TextBox1.Text = True TextBox2.Text = True End Sub Private Sub TextBox1_Change() TextBox1.Text = Left((Rnd * 100), 4) End Sub Private Sub TextBox2_Change() TextBox2.Text = CInt(TextBox1.Text) If Int(TextBox1.Text) = TextBox2.Text Then TextBox2.ForeColor = RGB(0, 0, 200) Else TextBox2.ForeColor = RGB(200, 0, 0) End If End Sub Descargar ejemplo de Function CInt Elaborado por: Salas Miguel A.
Funcin Abs
13/02/2013 by Rayza | 6 Comments La Funcin Abs obtiene el valor absoluto de un nmero. Para utilizarla en Excel se va a la barra de frmulas matemticas y se elige la opcin ABS, solo se debe especificar el nmero o la celda que se quiere hallar. Ahora en VBA se puede generar una macro de modo que se ejecute directamente. Ejemplo 1: Valor Absoluto de un nmero Sub Abs_Nmero() Range(B1) = Abs(Range(A1)) End Sub Ejemplo 2: Valor Absoluto para un rango de valores Sub Abs_Rango() Range(B1) = =+ABS(RC[-1]) Range(B1).Select Selection.AutoFill Destination:=Range(B1:B3) Range(B1:B3).Select End Sub Ejemplo 3: Valor Absoluto con condicionales Primero se tiene una lista de valores, a los cuales se saca el valor absoluto, de aqu se obtiene el total (suma de valores absolutos) y se puede agregar un condicional, siempre que
sea mayor (o menor) a un valor especifico (en el ejemplo 16), nos saldr como un Exceso (o Dficit), de acuerdo a lo que se especifique en la macros. Sub Abs_Condicional() Range(B1) = =+ABS(RC[-1]) Range(B1).Select Selection.AutoFill Destination:=Range(B1:B3) Range(B1:B3).Select Range(B4) = =SUM(R[-3]C:R[-1]C) If Range(B4) > 16 Then Range(B4).Value = Exceso End Sub
Funcin Formatpercent
13/02/2013 by DANTE ALEXANDER GUTIRREZ SANTOS | 0 comments La funcin FormatPercent nos permite convertir valores decimales en valores expresados en porcentaje (%). Por ejemplo, si introducimos 0.45, esta funcin nos permitir expresarlo como 45%. Los parmetros requeridos por esta funcin son los siguientes:
Expresin a dar formato. Nmero de dgitos para la parte decimal del valor expresado en porcentaje: 85.00% (dos dgitos en la parte decimal). En caso se utilice -1, el cual es valor indicado por Default, se adoptar el nmero de dgitos para la parte decimal segn como se encuentre configurado el sistema (configuracin regional). Incluir dgito inicial: sirve para poder visualizar el nmero cero en la parte entera de nmeros fraccionarios. Este parmetro se encuentra definido por tres estados vbTrue, vbFalse, vbDefault. Por ejemplo: en el caso de 0.0054, si asignamos vbTrue, el resultado sera 0.54% ya que estamos permitiendo el uso del dgito inicial, caso contrario, si utilizamos vbFalse para la expresin anteriormente mencionada obtendramos .54% como resultado, finalmente si utilizamos vbDefault aplicaramos el formato utilizado por el sistema (configuracin regional). Usar parntesis para sealar nmeros negativos: al igual que el caso anterior, este parmetro posee tres estados los cuales nos permite colocar parntesis ante un valor negativo (vbTrue) o no colocarlos (vbFalse). Agrupar nmeros en dgitos: nos permite agrupar dgitos de acuerdo a las unidades que este posee. Por ejemplo: 5400 expresado en porcentaje sera 540,000%.
3. Adems si tenemos el caso de DateAdd (m, 1, 31-Ene-2012), este automticamente generar una fecha real <<28 Feb 2012>> Por lo tanto buscaremos aplicar la funcin en el siguiente caso prctico: El Servicio de Gineco Obstetricia del Centro de Salud PUCP, requiere automatizar el clculo de Fecha Probable de Parto (FPP) de las gestantes atendidas en su institucin. Para resolver este punto nos basaremos en la Teora de Nagele, la cual refiere que para calcular la FPP debemos tener la Fecha de ltima Regla (FUR) y a esta fecha se suma 7 das y se restan 3 meses. de este modo tenemos lo siguiente: 1. Generamos una Base de Datos de registro:
2. Debemos verificar el formato de las celdas a trabajar y las celdas donde se aplicar la funcin tambin debern contener el formato FECHA y se verificar el tipo de calendario con el cual se trabaja.
3. Se procede a generar el Macro, con el objetivo de demostrar el uso exclusivo de la Funcin DateAdd, disearemos un Macro de doble actividad a. Utilizaremos la funcin DateAdd para incrementar 7 das a la FUR
Esta funcin, modificar en la fecha en 7 das, pero no los meses, por lo tanto colocaremos este dato comodn en la Hoja 2
b. Con el comodn calculado, volveremos a la programacin y continuaremos con la programacin para realizar la resta de 3 meses a la fecha.
De este modo podemos tener el la Hoja uno el Clculo de la FPP de modo certero:
Este algoritmo como se muestra en el ejemplo tiene la limitacin para clculos de fecha que modifiquen el ao, para mejorar este caso podran explorarse otras funciones que trabajen con Fechas. Ver: Date_Add Elaborador por: Paula Gabriela Ponce de Len Lovatn
resultado . Esto es para que el usuario compruebe si el archivo que ingres es el correcto, ya que el mensaje muestra el nombre del archivo ingresado junto a su tamao. Funcin FileLen ejemplo
12/02/2013 by JOS MIGUEL REYES CASTILLO | 0 comments La funcin IsEmpty sirve para verificar si una celda (o rango) est vaca o no tiene datos. Si en una celda hubiera un espacio (el cual no se puede ver), Excel no reconocera a la celda como vaca. La funcin IsEmpty solo es efectiva cuando se usa en variables variant, esto debido a que las otras variables ya tienen un valor asignado por defecto en la declaracin de las variables. Una variable es del tipo variant si no es explcitamente declarada como de otro tipo. Entonces, la funcin IsEmpty sirve para determinar si una variable ha sido alguna vez inicializada, es decir, si a esta variable se le ha asignado un valor. El siguiente ejemplo es una forma sencilla de usar la funcin IsEmpty. Este ejemplo es sobre una cuota que tienen que pagar cada departamento de un edificio, y si un departamento no paga tal cuota, este tendra que pagar una multa. La macro usada es la siguiente: Sub macro01() For i = 3 To 17 If IsEmpty(Cells(i, 2)) Then Cells(i, 3).Value = MULTA End If Next i End Sub Donde, las funciones For y Next sirven para que se analice desde la celda (3,2) hasta la celda (17,2). Y si una celda est vaca se asignar en la siguiente columna (misma fila) el valor de multa. Adjunto el archivo: Funcin IsEmpty en VBA Reyes Castillo, Jos Miguel
La funcin Len pertenece al grupo de manejo de cadenas en VB, la cual permite emplear el editor de VB de Microsoft Excel y sirve para poder conocer la longitud de una cadena de texto, es decir, la cantidad de caracteres que conforman a una cadena. A su vez, la sintaxis de esta funcin es Len (cadena | nombrevar), que cuenta con una parte (cadena) que sirve para cualquier expresin de cadena vlida, es decir si cadena contiene Null, se devuelve Null, y tambin cuenta con otra parte que es (Nombrevar) , en la que cualquier nombre de variable es vlido, o sea si nombrevar contiene Null, se devuelve Null, si nombrevar es un tipo Variant, la funcin Len acta devolviendo el nmero de caracteres que contiene. Asimismo, se debe especificar uno (y slo uno) de estos dos argumentos posibles. Ejemplo: -Grabacin de macro utilizando la Funcin Len Recordando la sintaxis : Len(cadena | nombrevar), Len(Aqu va la cadena que queremos averiguar su tamao), En el ejemplo siguiente , se ha grabado la macro7 y se ha procedido a usar la funcin Len para saber la cantidad de caracteres que tiene esta determinada cadena. Sub macro7() Dim LResult As Long LResult = Len(Bienvenidos al curso de Excel Macros) MsgBox Len(Bienvenidos al curso de Excel Macros) End Sub
El valor de la variable LResult pasara a valer 36 y hay que tener en cuenta que la funcin Len tambin toma en cuenta los espacios vacos. Otro ejemplo en el que se ha programado la funcion Len
En este caso el valor de la variable cadena pasara a valer 30 Erick Segovia Callao
Funcin Left
05/02/2013 by DAVID GONZALES TRUEVAS | 4 Comments Funcin Left () Definicin La funcin Left extrae una cantidad determinada de caracteres comenzando desde la izquierda del texto. Sintaxis La sintaxis de la funcin left es la siguiente: Left (palabra, extensin) Palabra: Esta contiene la cadena a la cual se extraer una cantidad de caracteres. Extensin: Expresin numrica, la cual ser la cantidad de caracteres que se extraern. Ejemplo: En este ejemplo utilizaremos la funcin left para extraer los primero cuatro dgitos de un cdigo.
Esta funcion puede adquirir un codigo y utilizarse en el momento que asi se requiera. Ejemplo
Si queremos que dos palabras aparezcan separadas por un espacio relativamente amplio, en un Msgbox, se debe usar esta funcin. Los trminos Nombre y Cdigo sirven como ejemplo para mostrar que los datos redactados en dichas celdas, sern separadas por la funcin Space
En ese cdigo, se ve que se mostrar en un MsgBox el Nombre y el Cdigo introducidos en las celdas B3 y B4 respectivamente Estos datos tendrn una separacin de 35 caracteres espacio, segn formula Space. La funcin String se usa ya que los espacios son caracteres iguales.
Entonces, la funcin Space es importante porque puede introducir espacios entre palabras. Autor : Jorge Ninaja
Uso de WorksheetFunction.RandBetween
04/02/2013 by ERICK VILA MIRANDA | 3 Comments Descripcion Esta funcion que al espaol se traduce como Aleatorio.Entre tiene como objetivo el generar valores aleatorios usando un rango definido por el usuario, en esto se diferencia de la funcion Aleatorio que usa limites dados por default (entre 0 y 1). Cabe resaltar que solo genera valores enteros.
Sintaxis Para generar un valor aleatorio entre -2 y 2 (por ejemplo) se usa la siguiente sintaxis: =Aleatorio.Entre(-2,2)
En general usaremos: =Aleatorio.Entre(inferior,superior) en donde inferior y superior siempre sern parametros definidos por el usuario. Entorno VBA Para generar una macro conteniendo esta funcion podemos usar el siguiente codigo que genera el valor aleatorio en la celda seleccionada, en particular encontre bastante util esta funcion por ejemplo para asignar una tarea a una persona de entre un grupo. Sub getrandnumber() inferior = InputBox(Inserte limite inferior) superior = InputBox(Inserte limite superior) ActiveCell.Value = WorksheetFunction.RandBetween(inferior, superior) MsgBox (El elegido es el numero: & ActiveCell.Value) End Sub
WorksheetFunction.RandBetween
Funcin Rnd
04/02/2013 by OSCAR BRIAN ADEMIR LOZANO LPEZ | 4 Comments La Funcin Rnd devuelve un nmero aleatorio entre 0 y 1. El siguiente ejemplo muestra un botn que genera un nmero aleatorio, el cual si es mayor a 5 se muestra de color rojo, caso contrario, de color verde. Sub Aleat() Producto = Rnd * 10 Range(C9).Value = Producto If Producto > 5 Then Range(C9).Font.Color = RGB(200, 0, 0) Else Range(C9).Font.Color = RGB(0, 200, 0) End If End Sub Para mayor detalle consultar: Descargar ejemplo de RND Elaborado por: Oscar Lozano
Funcion IsNumeric
04/02/2013 by JHAN PIERRE MANUEL CERVANTES MEJA | 10 Comments Funcin ISNUMERIC Por: Cervantes Meja Jhan Pierre Funcion IsNumeric_Jhan Pierre Cervantes Definicin y uso: IsNumeric es una funcin utilizada en Visual Basic, la cual nos sirve para evaluar si una expresin es numrica o no. Asimismo, si la expresin es numrica la funcin retornar el valor True (Verdadero), de lo contario devolver el valor False (Falso). Cabe mencionar, que esta funcin toma como valor numrico, ya sea a nmeros enteros como a decimales. Ejemplo: A continuacin se presentarn los pasos para evaluar una expresin como numrica utilizando la funcin IsNumeric:
1 En primer lugar, se crear un Useform, el cual tendr un solo textbox, el cual permitir solo el acceso de valores numricos. En caso, se ingresen letras u otros smbolos aparecer una ventana indicando que dicho expresin no corresponde a un valor numrico. Asimismo, como se mostrar en la siguiente imagen, el Useform contiene un cuadro de texto, un botn de comando y una imagen de fondo.
2 Para que se puedan validar los valores numricos se introducir el siguiente cdigo utilizando la funcin IsNumeric: Private Sub CommandButton1_Click() If IsNumeric(TextBox1.Text) Then MsgBox (TextBox1.Text & : Es un valor numrico) Else MsgBox (TextBox1.Text & :No es un valor numrico) End If End Sub Este cdigo se introducir en el evento vinculado al objeto CommandButton1. En este caso, el cdigo If IsNumeric (TextBox1.Text) Then MsgBox (TextBox1.Text & : Es un valor numrico) indica que si el valor introducido en el textbox1 (cuadro de texto) es un valor numrico se abrir una ventana mostrando el numero seleccionado seguido de la siguiente expresin : Es un valor numrico. Del mismo modo, si los valores introducidos en el TextBox1 no conforman un valor numrico aparecer una ventana confirmando dicha afirmacin, como lo veremos a continuacin:
El parmetro expresin es la expresin que deseamos transformar a formato moneda. El parmetro numDgitosDespusDeDecimal especifica el nmero de espacios luego del decimal que deseamos mostrar.
Los parmetros incluirDgitoInicial , utilizarParntesisParaNmerosNegativos y agruparDgitos pueden tener los valores de -1, 0, -2 segn la expresin sea verdadera, falsa o si queremos usar los valores por default respectivamente.
EJEMPLO: A travs del uso de la funcin FormatCurrency, creamos una macro que nos permita insertar un valor en formato moneda que represente el precio de un bien con el que estemos trabajando en una hoja de excel. Podemos insertar este precio en una celda o en un rango especificado, en el ejemplo este rango ser una columna de precios. 1 Creamos la macro: Sub Precio() Dim PrBien As Double definimos nuestra variable precio de tipo Double PrBien = 1830,589 Range(A1:A15) = FormatCurrency(PrBien, 4) asignamos el formato de moneda con 4 decimales. End Sub 2 Ejecutamos la macro y obtenemos el formato especificado.
En el ejemplo de la figura anterior se puede ver que la expresin dentro de la funcin IsNull es Null, lo que har que la Celda A1 contenga VERDADERO como se muestra en la siguiente figura.
Ejemplo 2:
En figura podemos apreciar que la expresin dentro del la funcin IsNull es a, la cual es diferente a Null. Por ello en la celda A1 se registrar FALSO como se ve en la siguiente figura.
Ejemplo 3:
En este ltimo ejemplo vemos que la funcin contiene la expresin a pero, en contraste al ejemplo anterior, esta ha sido igualado a Null. De esta manera, IsNull contiene una expresin igual a Null, dando como resultado que la celda A1 anoteVERDADERO.
Se desea que la variable Lvalor contenga el valor Ave para ello se define a Lvalor como una variable de tipo string despues Lvalor se le asigna la funcin choosedonde elegimo como indice=1 siendo la primera opcin el valor Ave.
Funcin CStr
04/11/2012 by Nelly Ventura | 0 comments FUNCION CStr La funcin CStr se utiliza para convertir un valor numrico en un tipo String: Sintaxis CStr (expresin) Nota.- El argumento expresin es cualquier expresin vlida. Su expresin es: Date Otro numrico CStr devuelve Una cadena que contiene una fecha en el formato de fecha corto de su sistema. Una cadena que contiene el nmero.
Se utilisa CStr para forzar el resultado que se va a expresar como String. EJEMPLO: Para observar su utilidad y forma de uso se ha elaborado la siguiente macro: Sub NELLYFuncionCStr ()
El siguiente ejemplo utiliza la funcin CStr para convertir un valor numrico y la fecha en un tipo String: Dim Mivalor1, MiCadena, MiFecha1, MiCadena2 Mivalor1 = 5438.324 MiFecha1 = 11/3/12 Mivalor es de tipo numrico. Mivalor es fecha
MiCadena = CStr(Mivalor1) MiCadena contiene 5438.324. MiCadena2 = CStr(#11/3/2012#) Micadena2 contiene 11/03/2012 MsgBox Mi Valor & (MiCadena) & y Mi Fecha & (MiCadena2) End Sub Formato VBA
RESULTADO
Nelly Ventura
Funcin CurDir
03/11/2012 by Alicia Chauca | 0 comments Ejemplo de Funcin CurDir Descripcin Esta funcin del VB se utiliza tanto en Excel como en Acces, y sirve para devolver una cadena que represente la ruta del directorio actual. Sintaxis CurDir (Drive) Parmetros Drive Parmetro opcional. Es una expresin que expecifica una unidad existente. Si no se especifica ninguna unidad o si Drive es una cadena de longitud cero (), CurDir devuelve la ruta de acceso de la unidad actual Ejemplo 1 CurDir (D) Devuelve la ruta de la ubicacin del archivo en el disco D:
Ejemplo 2 A continuacin se describe, paso a paso, cmo elaborar la funcin CurDir en el programador de Visual Basic 1) Colocar el encabezado: Sub funcioncurdir()
2) Colocamos la variable RUTA, y le asignamos el valor del directorio actual: RUTA = CurDir() 3) Asignamos el valor de la variable RUTA a la celda A40, ubicada en esta hoja: Worksheets(Hoja1).Range(A46).Value = RUTA 4) Lanzamos un Msgbox con la palabra Listo!: MsgBox Listo! 5) Por ltimo, terminamos el cdigo con End Sub El cdigo debe verse de la siguiente manera:
El parmetro Prompt especifica la leyenda que mostrar la caja de mensajes. El parmetro Title especifica el ttulo que llevar el cuadro de dilogo. El parmetro Default es el texto que mostrar la caja de texto.
El aspecto ms importante de InputBox es que nos devuelve una cadena con lo que haya ingresado el usuario en la caja de texto. Luego podemos realizar una tarea especfica dependiendo del valor resuelto. EJEMPLO: A travs del uso de la funcin InputBox, creamos una macro que nos permita registrar los nombres de las personas que consignaremos en la caja de informacin. 1 Creamos la macro: Sub nombres()
Dim i As String Dim a As Integer Range(A1:A5).Select selecccionamos rango de trabajo realizar repeticiones para cada una de las celdas recuperamos las cadena del input box
For a = 0 To Selection.Cells.Count
2 Ejecutamos la macro y registramos los nombres de la siguiente manera: 2.1. Ejecutando la macro
sinigv = CCur(x) End Function El resultado se puede observar en la siguiente tabla elaborada en una hoja de clculo usando la funcion sinigv (definida anteriormente), en la que se compara el clculo del monto sin IGV en las dos formas de tipo de dato: double y la convertida a tipo de dato currency.
Year, pueden estar escritos en un rango de [100-9999] Month, pueden estar escritos en un rango de [1-12] Day, puede estar escritos en un rango de [1-31]
Estos valores tambin pueden trabajar con operaciones de restas (-) o con valores diferentes al rango , las cuales reconocer segn sea el caso. Por ejemplo:
DateSerial (2013-1, 11, 02) >02/11/2012 DateSerial (2012, 13, 02) >02/01/2013 DateSerial (2012, 11, 0) >31/10/2012 DateSerial (2012, 11, 31) >01/12/2012
Funcin WeekdayName
21/07/2012 by Fernando Santos | 3 Comments La funcin Weekdayname es utilizada para conseguir el nombre del da de la semana que se requiera. Esta funcin requiere que se defina primero el parmetro FirstDayOfWeek que significa Primer da de la semana. La funcin completa es la siguiente: WeekDayName(weekday[, abbreviate][, firstdayofweek]) Donde los Argumentos son: Weekday: Es un valor que indica el da de la semana. Depender de la definicin del primer da de la semana que se establezca con el parmetro FirstDayOfWeek.
Abbreviate: Aqu se indica si el nombre del da que se presentar se abrevia o no. Es opcional su uso. De no utilizarse el valor predeterminado es False. Firstdayofweek: Es un valor numrico para indicar el primer da de la semana. Tambin es de uso opcional. Para establecer el primer da de la semana se pueden utilizar los siguientes valores: vbSunday, cuyo valor es 1 y es predeterminado para el domingo vbMonday, cuyo valor es 2 y es predeterminado para el lunes vbTuesday, cuyo valor es 3 y es predeterminado para el martes vbWednesday, cuyo valor es 4 y es predeterminado para el mircoles vbThursday, cuyo valor es 5 y es predeterminado para el jueves vbFriday, cuyo valor es 6 y es predeterminado para el viernes vbSaturday, cuyo valor es 7 y es predeterminado para el sbado Ejemplo 1: Sub Nombrediaabreviado() Funcion para mostrar nombre del da segn fecha indicada con abreviatura Nombredeldia = #7/22/2012# DiaSeleccionado = WeekdayName(Weekday(Nombredeldia), True, vbSunday) End Sub Con esta funcin se demostrar el nombre del da 22 de Julio del 2012 en forma abreviada. La fecha est en formato #Mes/Dia/Ao#
Ejemplo 2: Sub Nombrediasinabreviar() Funcion para mostrar nombre del da segn fecha indicada sin abreviatura Nombredeldia = #7/22/2012# DiaSeleccionado = WeekdayName(Weekday(Nombredeldia), False, vbSunday) End Sub La fecha est en formato #Mes/Dia/Ao# Con esta funcin se muestra el nombre del da seleccionado, en este caso nuevamente el 22 de julio del 2012, pero esta vez sin abreviaturas. Para conseguir esto en lugar de colocar True en abbreviate se est colocando False.
Ejemplo 3: Sub Nombrediasinabreviar2() Funcion para mostrar nombre del da segn fecha indicada sin abreviatura Nombredeldia = Range(A1) DiaSeleccionado = WeekdayName(Weekday(Nombredeldia), False, vbSunday) End Sub En este caso se est colocando la formula relacionada a una celda especifica del libro en Excel. En el ejemplo es la celda A1 en donde se coloca la fecha 21 de diciembre de 1994 que cae mircoles. Se adjunta la imagen de pantalla.
Se activa la funcin y se le asigna los caracteres que se desea convertir: LCase(cadena) donde la cadena puede contener tanto caracteres alfabticos como no alfabticos, el resultado de la funcin debe mantener la misma cantidad y secuencia de caracteres respetando los espacios, solo deben variar las letras maysculas a minsculas. Para usar esta funcin se usa datos de tipo String (mayormente) o Char; esto exige el ingreso de la cadena dentro de comillas. Por ejemplo se le asigna la siguiente cadena a la funcin y se corre la macro. LCase(PRUEBAexcel 88) = en la celda asignada debe mostrar: pruebaexcel 88 Tambin podemos utilizar la programacin para convertir el texto de una celda determinada a minsculas: Sub Macro1() texto = Range(B7) Range(B8) = LCase(texto) End Sub En este caso todo lo que se ingrese en la celda B7 ser convertido en minsculas. Elaborado por: Adrian Villegas
Funcin ROUND
03/06/2012 by Fernando Santos | 20 Comments La funcin ROUND es empleada para redondear valores numricos. 1. Lgica de funcionamiento Entindase que si el valor a redondear tiene parte decimal menor a 0.5, el valor obtenido ser igual a la parte entera del nmero ingresado. Por otro lado, si el valor a redondear tiene parte decimal mayor o igual a 0.5, el valor obtenido ser igual al entero inmediato superior de la parte entera del nmero ingresado. 2. Sintaxis: = ROUND (valor a redonear)
3. Ejemplo prctico: Si deseamos redondear el valor 19.65 colocado en la celda A1 de nuestra hoja de Excel y luego mostrar su valor ya redondeado, podemos utilizar la funcin ROUND, como sigue: Sintaxis en VB: Sub redondear() valor = round(Range(A1)) MsgBox (El valor redondeado es: & valor) End Sub Respuesta del sistema:
Funcin Sgn
02/06/2012 by Fernando Santos | 1 Comment 1. Definicin La funcin SIGNO devuelve el signo de un nmero de la siguiente manera:
Retorna 1 : si el argumento nmero es positivo. Retorna 0 : si el argumento nmero es cero. Retorna -1 : si el argumento nmero es negativo.
El argumento es el valor que proporciona informacin a una accin, un evento, un mtodo, una propiedad, una funcin o un procedimiento. 2. Sintaxis SIGN (nmero) La sintaxis de la funcin SIGNO tiene los siguientes argumentos Nmero : Obligatorio. Es un nmero real cuyo signo se desea saber. 3. Ejemplos a) b) c) d) e) f) SIGN(100) es igual a 1 SIGN(-2500) es igual a -1 SIGN(0) es igual a 0 SIGN(-4) es igual a -1 SIGN(1025) es igual a 1 SIGN(-124) es igual a -1
5. Grabacin de macro utilizando la Funcin Sgn En el ejemplo siguiente, la macro retorna el nmero 1 en la celda B1, luego de evaluar el nmero ingresado previamente en la celda A1,en este caso: 45 (nmero positivo).
Sgn(x)
Donde su dominio y rango son respectivamente: Dom(f)=R Ran(f)= {-1,0,1} En computacin el concepto es idntico al matemtico, pero en trminos informticos orientados a la programacin La mayor parte de los lenguajes de programacin aplican esta funcin. No obstante, si no la aplican, es fcilmente construible. Elaborado por: Isabel
Funcin Date
02/06/2012 by Fernando Santos | 6 Comments La Funcin Date (Da) permite representar una fecha completa (Da- Mes-Ao) en el valor del da mostrado (numero comprendido entre el 1 y 31). Para utilizar esta funcin correctamente es necesario establecer la fecha en un formato que MS Excel reconozca como tal, es decir, no podemos mostrar el valor de una fecha utilizando la Funcin Da, si la misma esta en formato de texto. Para ello puedes ayudarte de la Funcin Fecha, en donde debes colocar el ao, el mes y el da (ver grfico 1) Grfico 1
Utilizando esta funcin aseguramos la viabilidad y correcto desempeo de la funcin Da. Veamos un ejemplo paso a paso: Supongamos trabajamos dentro del rea de Recursos Humanos en una empresa pequea y necesitamos obtener los cumpleaos de los colaboradores que se celebran en el da para poder enviarles un mensaje de felicitaciones por su cumpleaos. Tenemos el siguiente cuadro en la columna A, los Nombres de los colaboradores, en la columna B la fecha de cumpleaos y en la Columna C queremos determinar que da del mes cumplen aos los colaboradores: Paso 1
Cuadro Inicial
Paso 2 Verificar el formato de las fechas, para mayor facilidad utilizar la Funcin Fecha para estandarizar las mismas:
Paso 3 Una vez estandarizadas las fechas, colocamos en la columna C3 la Funcin Dia permitindonos obtener el da del mes de Noviembre en que los
Paso 4 Podemos arrastrar el cursos para que la formula se repita en las siguientes celdas y obtener rpidamente los resultados de das:
De esta manera identificamos los das de una fecha especfica, pero podemos generar una macro para que realice la misma tarea cada vez que necesitemos obtener la informacin: Funcion Date en una Macro:
Funcin INT
02/06/2012 by Fernando Santos | 12 Comments FUNCIN INT (ENTERO) La funcin entera nos permite redondear los nmeros hasta un entero inferior ms prximo como por ejemplo: Tenemos un valor de 17.9 en la celda D5, aplicando la funcin INT en la celda F5 nos da un valor inferior ms prximo de 17. F5=ENTERO(D5)
Ahora aplicamos la funcin para nmeros negativos por ejemplo: Tenemos en la columna C los valores de : -7.5 y -3.2 , para la celda E4 aplicamos la funcin =ENTERO(C4) y nos da un valor prximo, que en este caso sera el -8. Aplicando la misma funcin para la celda C5 nos da un valor de -4.
Aplicacin en VB: Tenemos un valor en la celda D5=17.9, aplicando la grabadora de macros en la celda F5 se genera automticamente un cdigo en VBasic como el siguiente: Sub Macro3() ActiveCell.FormulaR1C1 = =INT(RC[-2]) Range(F6).Select End Sub De esta manera en la celda F5 ejecutando la macros nos da como resultado 17.
DATO: solo se puede ejecutar la macros en la columna F, si realizamos esta aplicacin en otra columna nos da como valor 0. Elaborado por: Miguel Paz
Funcin DateDiff
02/06/2012 by Fernando Santos | 4 Comments Qu es la funcin DateDiff? Es una funcin de VBA que devuelve un valor numrico en funcin de 3 parmetros. Cmo usar esta funcin? Se usa de la siguiente manera: DateDiff(Parametro, Fecha Inicial, Fecha Final,[Fecha Inicio Semana], [Fecha Inicio Ao]) Donde: Parametro: Permite definir qu es lo que se va a calcular, sea das, horas, minutos, hasta aos. Fecha Inicial: Es la fecha desde donde se empezar el clculo. Fecha Final: Es la fecha donde finalizar el clculo. Fecha Inicio Semana: Permite definir el da de inicio de semana, por default Excel toma como domingo el primer da de semana. Es un parmetro opcional Fecha Inicio Semana: Permite definir el da de fin de semana, por default Excel toma como el 1ro de Enero el primer da de semana. Es un parmetro opcional. Qu es lo que hace? Devuelve un valor que resulta ser la diferencia de Fecha Final y Fecha Inicial, segn sea el parmetro que se especifique. Esta funcin es muy importante en el clculo de tiempo, ya que Excel toma los valores de fecha como nmero y lo que en verdad se muestra es un formato de esa serie de nmeros. Al usar la frmula, Excel toma el valor del formato mostrado ( es decir, si se coloca 40940, Excel tomar el valor en fechas de ese nmero que viene a ser el 01/02/2012 a las 12:00 am). Ejemplo:
Codigo VBA: Sub PruebaDateDiff() Notar la definicion de variables locales Dim a As Date Dim b As Date Dim Parametro As String Dim Mensaje As Long Fecha1 = Range(B1) Fecha1 es la Fecha Inicial Fecha2 = Range(B2) Fecha2 es la fecha Final Parametro = Range(B3) Mensaje = DateDiff(Parametro, Fecha1, Fecha2) MsgBox Mensaje End Sub Elaborado por: Jess Tapia
Qu es la funcin CDate? Es una funcin de VBA que nos va a devolver una expresin del tipo date. Cmo usar esta funcin? La denominacin general de la funcin CDate es la siguiente: CDate(fecha) > donde fecha es una expresin de fecha vlida; es decir, debe ser aceptada por el sistema. Adems puedes poner la hora si lo deseas. Por ejemplo, una forma equivocada de usarlo es la siguiente: texto = CDate(20 de Mayo del 2012) Range(B2) = texto El sistema nos va a rechazar esta expresion y nos va a dar un error muy frecuente al usar la funcin CDate
La pregunta ahora es: Qu expresiones podemos usar en la funcin CDate? Estos son algunos ejemplos donde la funcin CDate nos va a ceptar nuestras expresiones: CDate(May 12 2012) CDate(20 May 2010) CDate(2010 06 May) El orden de estos no va afectar la expresion date que nos devuelva la funcin; eso si, hay que tomar en cuenta como est configurado nuestro sistema; porque eso determina los meses que nos acepta. En ingls nos aceptara: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec En espaol nos aceptara: Ene Feb Mar Abr May Jun Jul Ago Sep Oct Nov Dic
Usando otros ejemplos donde nos aceptar la funcin CDate. CDate(02/06/2011) CDate(10/25/91 15pm) CDate(04:25:33 am) En qu nos ayuda? A no configurar las celdas a formato fecha manualmente ya que esta funcin lo har por nosotros. Ejemplos en Excel: Descargar ejemplos de CDate Elaborado por: Daniel Eduardo Espinoza Rodriguez
4.5=5 -4.9=-5 Cuando queremos simplemente eliminar todas las cifras decimales de una celda con formato nmero sin tener tal efecto de aproximacin (para nmeros positivos o negativos), podemos usar la funcin Fix. Ejemplo: Fix(4.2)=4 Fix(4.9)=4 Fix(4.5)=4 Fix(-4.9)=-4 Un caso tpico es aquel donde queremos presentar las notas parciales de los estudiantes de un curso(con valores del 1 al 100), las cuales presentan 3 decimales. Truncaremos los valores fraccionarios a su valor entero con Fix ,ya que buscamos una presentacin ordenada pero no queremos aproximar las notas parciales (por ejemplo, convertir 89.8 en 90) hasta sumarlas y tener la nota final. Cabe resaltar que similar objetivo puede ser cumplido otorgndole a la celda con el dato numrico el formato Perzonalizado y eliminar las cifras decimales. Aplicacin con Macros Se adjunta un documento en el cual queda ilustrada una forma de insertar datos numricos con decimales y tener el resultado entero gracias a la funcin Fix. Descargar Ejemplo de Funcin FIX
Funcin LTrim
17/04/2012 by Fernando Santos | 6 Comments Function LTRIM La Funcin LTrim elimina los espacios en blanco que se encuentren la parte izquierda de una cadena de texto Ejemplo:
En ese caso se eliminan los espacios que se encontraban al inicio de la palabra casa y se concatenan al nmero 1. De forma anlogo a la existencia de LTRIM existe RTRIM, se recomienda revisar los siguientes ejemplos los cuales contienen comparaciones de uso de RTRIM, LTRIM, y otras funciones de texto, que podran ser de utilidad. Elaborado por: Dalia Vasquez
Funcin InStr, ayuda a buscar una cadena dentro de otra cadena, y muestra la posicin de la cadena buscada InStr (comienzo, Cadena donde buscar , La Cadena a buscar) Ejemplo a= El mundo es ancho y ajeno InStr (a, ancho) La respuesta ser el nmero 13 Si no se especifica el comienzo, la bsqueda empieza de la ubicacin cero Ejemplos del uso de todas las funciones
Funcin CHR
02/04/2012 by Fernando Santos | 2 Comments Esta funcion se encarga de convertir un nmero del cdigo ANSI(Del 0 al 255) en su caracter correspondiente. As por ejemplo, en el procedimiento que escribiremos en un mdulo de VBA, se procedera a convertir el codigo ANSI ubicado en la celda A1 en su caracter correspondiente en la celda B2.
Esta funcin podra emplearse tambin si una cadena de texto solo tuviese una relacin de caracteres permitidos, se tendra en dicho caso que evaluar si cada uno de los caracteres de dicha cadena pertenecen o no a la relacin de caracteres permitidos, en este caso podra usarse en combinacin con otras funciones como mid u otras funciones destinadas a la manipulacin de textos. Al igual que las dems funciones esta funcin no solo de puede emplear desde un mdulo sino tambin desde un formulario o algn otro elemento del explorador de proyectos.
Funcin DateSerial
01/04/2012 by Fernando Santos | 5 Comments Utilidad: Devuelve un valor Date que representa un ao, mes y da especficos, con la informacin de la hora establecida en medianoche (00:00:00).
------------------------------Public Function DateSerial( _ ByVal [Year] As Integer, _ ByVal [Month] As Integer, _ ByVal [Day] As Integer _ ) As DateTime -------------------------------
Parmetros: Year Obligatorio. Expresin Integer entre 1 y 9999. Sin embargo, los valores por debajo de este intervalo tambin se aceptan. Si Year est entre 0 y 99, se interpreta como si estuviera entre 1930 y 2029, tal y como se explica en la seccin Comentarios que aparece a continuacin. Si Year es menor que 1, se sustrae del ao actual. Month Obligatorio. Expresin Integerentre 1 y 12. Sin embargo, los valores fuera de este intervalo tambin se aceptan. El valor de Month tiene un desplazamiento de 1 y se
aplica al mes de enero del ao calculado. En otras palabras, (Month 1) se agrega al mes de enero. Si es necesario, se vuelve a calcular el ao. Los resultados siguientes ilustran este efecto: Si Month es 1, el resultado es el mes de enero del ao calculado. Si Month es 0, el resultado es el mes de diciembre del ao anterior.
Si Month es -1, el resultado es el mes de noviembre del ao anterior. Si Month es 13, el resultado es el mes de enero del ao siguiente.
Day Obligatorio. Expresin Integerentre 1 y 31. Sin embargo, los valores fuera de este intervalo tambin se aceptan. El valor de Day tiene un desplazamiento de 1 y se aplica al primer da del mes calculado. En otras palabras, (Day 1) se agrega al primer da del mes. Si es necesario, se vuelven a calcular el mes y el ao. Los resultados siguientes ilustran este efecto: Si Day es 1, el resultado es el primer da del mes calculado. Si Day es 0, el resultado es el ltimo da del mes anterior.
Si Day es -1, el resultado es el penltimo da del mes anterior. Si Day pasa del final del mes actual, el resultado es el da adecuado del mes siguiente. Por ejemplo, si Month es 4 y Day es 31, el resultado es el da 1 de mayo.
Ejemplo:
Sub Cumpleano() ' Dim MiCumpleano As Date ' MiCumpleano contiene la fecha del 5 de Enero de 1974. MiCumpleano = DateSerial(1974, 1, 5) ' Return a date. MsgBox MiCumpleano End Sub
Funcion Cbool
31/03/2012 by Fernando Santos | 2 Comments CBool(expresin) Devuelve una expresin que se ha convertido en tipo Variant de subtipo Boolean.
El argumento expresin es cualquier expresin vlida. Ejemplo: Sub prueba() Dim sText As String sText = InputBox(Entre su nombre completo:) If CBool(InStr(sText, cruz)) Then MsgBox El apellido ;cruz+ aparece en el nombre entrado End If End Sub Elaborado por: Maria Cruz
Funcin TimeSerial
31/03/2012 by Fernando Santos | 2 Comments Calcula un valor de hora serie para los parmetros de hora, minuto y segundo especificados que se hayan pasado como valores numricos. Tambin se puede usar este valor para calcular la diferencia entre dos horas. Sintaxis: TimeSerial (hora, minuto, segundo) Valor de retorno: Fecha Parmetros: hora: Cualquier expresin entera que indique la hora utilizada para determinar el valor de hora serie. Valores vlidos: 0-23. minuto: Cualquier expresin entera que indique el minuto de la hora utilizada para determinar el valor de hora serie. En general, se usan valores entre 0 y 59. Sin embargo, tambin se pueden usar valores que excedan este rango, en que el nmero de minutos afecta al valor de hora. segundo: Cualquier expresin entera que indique el segundo de la hora utilizada para determinar el valor de hora serie. En general, se usan valores entre 0 y 59. Sin embargo, tambin se pueden usar valores que excedan este rango, en que el nmero de segundos afecta al valor de minuto. La funcin TimeSerial se puede usar para convertir cualquier hora en un valor simple que se puede usar para calcular diferencias entre horas. Ejemplo 1:
Sub ejemplotimeserial() Dim dfecha as String dfecha = timeserial(8,17,45) Msgbox dfecha,64,tiempo con formato End sub
Ejemplo 2: cuando se sobrepasan los 59 minutos Sub ejemplotimeserial() Dim dfecha As String dfecha=timeserial(8,61,45) Rango(A1)=dfecha End Sub
NOTA: los minutos y segundos pueden sobrepasar el nmero 59 y tambien pueden ser negativos. Elaborado por: Kathia Ordoez
Funcion Ucase
31/03/2012 by Fernando Santos | 7 Comments Devuelve una cadena o un carcter que contiene la cadena especificada convertida en maysculas. Ejemplo: En este ejemplo se utiliza la funcin UCase para devolver la versin en maysculas de una cadena.
' String to convert. Dim LowerCase As String = "Hello World 1234" ' Returns "HELLO WORLD 1234". Dim UpperCase As String = UCase(LowerCase)
Funcin InStr
31/03/2012 by Fernando Santos | 2 Comments DESCRIPCIN:
Esta funcin es particularmente til en combinacin con otras funciones que permiten la manipulacin de textos. La funcin InStr retorna la posicin de la primera ocurrencia de una cadena de caracteres en otra cadena de caracteres. La sintaxis de la funcin InStr es la siguiente: InStr( [start], string_being_searched, string2, [compare] ) start (opcional): Es la posicin en la cual empieza la bsqueda. Si el parmetro es omitido, la bsqueda empezar en la primera posicin. string_being_searched: es la cadena donde se buscar la ocurrencia. string2: es la cadena que se buscar. compare (opcional): Indicar el modo de bsqueda. Ejemplo: Sub FUNCION_INSTR() posicion = InStr(Hola, l) Range(B3) = posicion End Sub En posicin se guardar el valor de 3 que es la posicin que ocupa l en la cadena Hola. Esta posicin una vez obtenida puede ser empleadas por otras frmulas para determinar cual es el texto que se requiere obtener. Elaborado por: Luis Pinto
Funcin Format
31/03/2012 by Fernando Santos | 5 Comments DESCRIPCIN DE LA FUNCIN: FORMAT Es una funcin que toma una expresin, una fecha o un valor numrico y lo convierte a un string de acuerdo al formato especificado. Sintaxis: Ejemplo: Sub tarea1() valor = 0.83 porcentaje = Format(0.83, PERCENT) Format ( expresin, [ formato ] )
Funcin CDbl
31/03/2012 by Fernando Santos | 0 comments En el VBA existen varios tipos de datos, como por ejemplo: Boolean, Byte, Currency, date, Double, Decimal, Integer, Long, Single, String y Variant. La diferencia entre estos tipos de datos est en su tamao y la cantidad de memoria que se reserva para su uso. Por ejemplo, la extensin mas pequea es un Boolean, su rango va de 0 a 1, representa un bit, un Byte su rango es de 0 a 256 (tiene 8 bits), y la ms extensa o ms precisa es un Double, que tiene un rango de -1,79769313486232E308 a 1,79769313486232E308 (8 Bytes , es decir, 64 bits). La funcin CDbl(), permite convertir cualquier tipo de dato numrico a un Double. Por ejemplo CDbl fuerza a una doble precisin aritmtica en una operacion aritmetica, ya sea entre enteros (integer) y/o currencies (currency). Tambin permite homogenizar los diferentes formatos de datos que existen, por ejemplo hay pases que usan comas para expresar millones y miles, la funcin CDbl permite homogenizar esto a un solo formato.
Funcin IsDate
31/03/2012 by Fernando Santos | 1 Comment Devuelve un valor de tipo Boolean que indica si una expresin se puede convertir en una fecha. Sintaxis: IsDate(expresin) Argumentos: El argumento expresin, es un tipo de datos Variant que puede ser cualquier expresin de fecha o expresin de cadena reconocible como una fecha o una hora. Observaciones: IsDate devuelve Vedadero si la expresin es una fecha o se puede reconocer como una fecha vlida; caso contrario, devuelve Falso. En Microsoft Windows, el intervalo de fechas vlidas est comprendido entre el 1 de enero de ao 100 d.C. y el 31 de diciembre de 9999 d.C.; los intervalos varan de un sistema operativo a otro. Ejemplos: 1. Se utiliza la funcin IsDate para determinar si una expresin puede convertirse en fecha.
Dim MiFecha, SuFecha, SinFecha, MiFecha = 31 marzo 2012: SuFecha = #31/03/12#: SinFecha MiPruebita = IsDate(MiFecha) Devuelve MiPruebita = IsDate(SuFecha) Devuelve MiPruebita = IsDate(SinFecha) Devuelve Falso
2. Se utiliza la funcin IsDate para determinar si una expresin corresponde a una fecha. MsgBox IsDate(22-12) MsgBox IsDate(1.12) MsgBox IsDate(1/31/20) MsgBox IsDate(1/31/20) Devuelve Verdadero Devuelve Devuelve Devuelve Verdadero Verdadero Verdadero
3. Se utiliza la funcin IsDate para detectar si una celda tiene formato de fecha o no. If IsDate(Range(A1)) Range(B1).Value = Else: Range(B1).Value End If Revisar archivo adjunto: Funcin IsDate Elaborado por: Itala Tern = si = no True es es Then fecha fecha
Funcin Asc
30/03/2012 by Alberto Gonzales | 4 Comments La funcin se encarga de identificar el primer carcter de una cadena de caracteres, estos caracteres pueden ser: Numricos, Textuales, smbolos y distintas combinaciones entre ellos. Luego de identificar el primer carcter, la funcin obtiene su valor numrico ASCII (American Standard Code for Information Interchange). Valor numrico ASCII: Las computadoras solamente entienden nmeros. El cdigo ASCII es una representacin numrica de un carcter como a o @. ejemplos de cdigos ASCII: estas representaciones numricas nos permiten realizar llamadas a los caracteres, con la sentencia alt + (codigo ASCII)
Ejemplo de Funcin Asc. Sub Caracter() Valor = Asc(Range(E7).Value) Range(E8).Select ActiveCell.FormulaR1C1 = Valor End Sub
la funcin se ejecutara teniendo en cuenta el valor de la celda E7, esto en la hoja activa del libro. leer el primer carcter y devolver su valor ASCII en la celda E8. Elaborado por: Alberto Gonzles
Funcin InStrRev
30/03/2012 by Fernando Santos | 2 Comments La funcin InStrRev se utiliza para recuperar la posicin de una cadena de caracteres que se encuentra contenida dentro se otra cadena ms larga. La funcin requiere de 4 argumentos donde los dos ltimos son opcionales. InStrRev(cadena sobre la que efecta la bsqueda, cadena que se busca, posicin de inicio (opcional), tipo de comparacin (opcional)) Posicin de inicio: Es un nmero que establece la posicin inicial para cada bsqueda. Si se omite, se utiliza 1, que significa que la bsqueda empieza en la posicin del ltimo carcter. Tipo de comparacin: Es un valor numrico que indica la clase de comparacin que se utilizar cuando se evalen las sub-cadenas. Si se omite, se realiza una comparacin binaria. Tambin puede utilizarse 1, que significa que se realizar una comparacin basada en el texto. Ejemplo: En el siguiente caso se tratar de recuperar la posicin que ocupa la palabra tarea dentro de la cadena almacenada en la variable CadenaTmp. Sub Macro1() Dim CadenaTmp As String CadenaTmp = Esta cadena contiene la palabra tarea MsgBox InStrRev(CadenaTmp, tarea, -1) End Sub
Esto indica que la palabra tarea empieza en la posicin 33 de la cadena ya que el espacio en blanco a la izquierda de la letra t es la posicin 32. Por defecto se utiliza el tipo de comparacin binaria que diferencia maysculas de minsculas, pero si queremos utilizar la comparacin basada en texto procedemos de la siguiente forma:
Al colocar al final el parmetro 1 indicamos que estamos buscando la letra O ya sea en maysculas o minsculas. Sub Macro1() Dim CadenaTmp As String CadenaTmp = Esta cadena contiene la palabra tarea MsgBox InStrRev(CadenaTmp, O, -1, 1) End Sub
06/03/2012 by Fernando Santos | 1 Comment Los arreglos son un conjunto de elementos que tienen el mismo tipo de datos y que estn ordenados secuencialmente. Cada elemento de una matriz posee un nmero de ndice nico que lo identifica. Adems, Los cambios efectuados a un elemento de una matriz no afectan a los dems elementos. Para definir un arreglo unidimensional se coloca lo siguiente: Dim arreglo(INTERVALO) As TIPO Donde INTERVALO indicar el menor ndice y el mayor ndice del arreglo. Por ejemplo, si quiero definir un arreglo que almacene 20 datos enteros (variando sus valores entre 0 y 255), entonces lo har de la siguiente manera, Dim A(1 To 20) As Byte, esto indicar que el sistema debe separar 20 casilleros para almacenar 20 enteros de tipo Byte entre 0 y 255. Cuando quiero almacenar el valor 18 en la posicin 9 del arreglo anterior A entonces debemos colocar A(9)=18. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 18 Para llenar un arreglo con datos desde una hoja de Excel, se usa el siguiente subprograma:
Sub llena_arreglo (ByRef A() As Byte, ByVal N As Byte) Dim I As Byte For I=1 To N A(I)=Range("B"&I) Next End Sub
En el programa anterior, N indica el nmero de elementos que tiene el arreglo (que no necesariamente ser el nmero 20, pero de todas formas ser un nmero menor igual a 20) y este nmero de elemento no puede ser mayor del que se coloc en la declaracin del DIM usado en el Subprograma Principal. Es importante mencionar que para pasar como parmetro un arreglo se debe usar siempre la palabra ByRef (nunca ByVal). Tambin debe recordarse que en un arreglo todos los datos son del mismo tipo. EJEMPLO: Si se desea crear un subprograma que calcule el promedio de notas de un conjunto de alumnos cuyos datos se muestran en una hoja de excel de la siguiente manera. En la celda B1 se encuentra el nmero de alumnos (10 alumnos), de la celda A4 a la A13 se encuentra la numeracin de los alumnos, formando una columna 1,2,3,4,510. En la siguiente columna desde la celda B4 hasta la B13 se ubican las respectivas notas de los alumnos y finalmente en la celda E4 se encuentra el promedio de notas.
Sub principal() Dim N As Byte, promedio As Single Dim A(1 To 10) As Byte N=Range("B1") Call llenar_arreglo(A,N) promedio=calc_promedio(A,N)
Range("E4")=promedio End Sub Sub llenar_arreglo(ByRef A() As Byte, Byval N As Byte) Dim I As Byte For I=1 To N A(I)=Range("B"&I+3) Next End Sub Function calc_promedio(ByRef A() As Byte, ByVal N As Byte) As Single Dim I As Byte, suma As Single suma=0 For I=1 To N suma=suma+A(I) Next calc_promedio=Round((Suma/N),1) End Function
Comisiones AFP
Calcule si le conviene la comisin por flujo o la comisin mixta que las AFP en el Per estn ofreciendo. Tenga presente que actualmente todos los aportantes nos encontramos en la Comisin por Flujo y si no hacemos nada pasaremos automticamente a la Comisin Mixta, la pregunta natural es si realmente nos resulta conveniente dicho cambio, Cul de las comisiones de las afps nos resultara conveniente? para ayudarlo a analizar si le resulta conveniente o no descargue el siguiente archivo que le puede ayudar a clarificar su duda.
- Asume una rentabilidad moderada, si desea modificar dicha rentabilidad por que asume que la AFP en la que se encuentra le brinda una mejor rentabilidad (puede modificar esta cantidad si la desea). - Se asume una tasa de descuento del 1% a fin de que pueda comparar las cifras pagadas en el presente(puede modificar esta si lo desea). En la Zona Naranja encontrar el monto al que equivale el pago por comisin que realizar a su AFP tanto si se trata de una comisin de flujo como si se tratase de una comisin mixta. En la Zona Celeste encontrar una estimacin de cuanto dispondr en su AFP al momento de Jubilarse.
Por ejemplo para el caso mostrado: - Si tiene ahorrado en su AFP 12000 - Piensa aportar 15 aos - Tiene un sueldo de 1500 El archivo nos muestra que en la comisin por flujo usted pagara el equivalente a 2000 nuevos soles en la AFP Prima, en la mayora de las comisiones mixtas pagara comisiones similares, excepto en Habitat donde pagara el equivalente a 1026 nuevos soles. Sin embargo, en el mismo ejemplo, el fondo disponible bajo la comisin por flujo sera de poco mas de 56 mil soles, mientras que en el fondo mixto tendra menos dinero, en el caso de la AFP Prima solo tendra casi 52 mil nuevos soles, y en Habitat tendra al rededor de 53 mil nuevos soles. Es decir, en la mayora de los caso pagara montos similares y recibira menos, en el caso de Habitat por ejemplo lograra un ahorro de al rededor de 1000 nuevos soles (respecto de la comisin por Flujo de Prima) pero tendra 3000 nuevos soles menos en su fondo al momento de jubilarse.
Tenga presente que la informacin mostrada es solo referencial, si tiene sugerencias, dudas o alguna observacin por favor registre sus comentarios en esta pgina, o escrbanos a info@excel-avanzado.com
http://www.excel-avanzado.com/funcionesdefinidas-por-el-usuario