lunes, 13 de febrero de 2012

Codigo en Visual Basic de IF con macros en Excel

aqui tengo un ejemplo de como utilizar un IF con macros que encontre en una pagina de una unviersidad, las funciones seran llamadas desde unas celdas por lo que al abrir el archivo Excel ya apareceran con ciertos valores, lo que haremos en este ejemplo sera a partir de una fecha obtener su numero ordinal respecto de la semana si es domingo sera 1, lunes 2, martes 3,...., devuelve el numero de mes, el año, la hora el minuto y el segundo, y tambien retorna un mensaje si es que ese dia es un fin de semana o no, el ejemplo tenia 2 fechas yo decidi probarlo con la fecha de hoy y funciono :)
estos son los resultados que aparecen con la fecha de hoy
aqui les explicare brevemente cada macro:
Function age(birthdate)
    age = Int((Int(Now() - birthdate)) / 365)
End Function
en esta funcion se devuelve la diferencia de años entre la fecha que figura en la celda A1 (09/12/1982)
Function DD(da As Date)
    DD = Weekday(da)
End Function
aqui se devuelve el numero ordinal del dia al que corresponde la fecha como les explique mas arriba.
Function MM(d)
    MM = Month(d)
End Function

Function YY(d)
    YY = Year(d)
End Function

Function HH(d)
    HH = Hour(d)
End Function

Function MI(d)
    MI = Minute(d)
End Function

Function SS(d)
    SS = Second(d)
End Function
en estas funciones se devuelve el numero de mes, el año, la hora, el minuto y el segundo.
Se que con este codigo hasta aqui no hemos utilizado el IF, aqui veran el IF en accion.

Function Si(x)
      If x = 0 Then
          Si = 1
      Else
          Si = Sin(x) / x
      End If
End Function
esta funcion lo que hace es calcular el arcoseno de un angulo dado, asi que si escriben -1 y llaman a esta funcion en cualquier celda escribiendo =Si(-1) les saldra

si, el mismo valor que sale de calcularlo con google.
hay otras funciones sencillas que tienen un if anidado que van a encontrar en el excel las pueden ver al presionar ALT+F11, aqui estoy explicando las funciones que me parecieron interesantes, como esta:
Function Fthree(x)
      Fthree = IIf(x = 0, 1, Sin(x) / x)
End Function
esta funcion expresa de otra forma las condicionales, retornando 1 si el valor que se ingresa es 0 o devolviendo la division en caso de ser otro valor, esto se hace para controlar un error al dividir entre 0.
la funcion que les dije que devuelve si la fecha es un fin de semana es esta:
Function WE(x As Date) As String
      Dim temp As Integer
      temp = Weekday(x)
      If temp = 1 Or temp = 7 Then
          WE = "That day falls on a weekend."
      Else
          WE = "That day is a weekday."
      End If
End Function
aqui pueden descargar el archivo: Pincha aqui

0 comentarios:

Publicar un comentario