Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Evaluacion del dia con la Función Day

| 38 comentarios

En los laboratorios de las empresas, es muy importante evaluar periódicamente las sustancias peligrosas de acuerdo a una planificación hecha. El presente ejemplo muestra a través de una columna los días (1 al 31) en que se harán las evaluaciones.

La función DAY devuelve el día del mes (un número de 1 a 31) de una fecha. En el ejemplo, primero se evalúa el número de filas para saber cuántas actividades se van a evaluar entonces utilizamos una instrucción For… Next. Aplicamos la función DAY a cada fecha de la columna B y obtenemos el resultado en la columna C según se programó.

Es importante mencionar que este ejemplo permite que sean escritas nuevas sustancias con nuevas fechas pues el código de la última fila lo permite.

Day

(Para mayor visualización de la imagen, hacer click en la misma)

Evaluacion del dia con Day

 

Por: Christian Gózar

38 comentarios

  1. Interesante.

  2. Hola, descargué el archivo de ejemplo (Evaluacion del dia con Day) pero no entiendo para qué sirve o qué significa el siguiente código:
    ult = Cells(Rows.Count, 2).End(xlUp).Row

    Está antes de la instrucción:
    For i = 2 To ult
    Este último lo describiste en el ejemplo saber cuántas actividades se van a evaluar.

    • Hola, este código significa que tomará el último valor de la fila en la columna B (columna A=1, Columna B=2, ...). Sirve para automatizar la búsqueda de los últimos valores que se encuentran en la columna "B", ya no tendrás que brindarle un valor específico al código For "i".

  3. En el problema Day, utiliza
    ult = Cells(Rows.Count, 2).End(xlUp).Row

    ult es la ultima fila ocupada de la hoja en la columna 2, todo ese comando hace eso

    rows count hace un conteo de filas en la columna 2 y el resto del comando es para completar de concluir de hallar "ult"

    ult lo necesita porque el for next requiere de un "inicio" y un final que es "ult"

    Es un buen metodo para hallar la ultima fila de la hoja (en un columna dada) que esta ocupada por caracteres o numeros.

    Favor si nos orientan un poco a entender este comando

  4. ¿Y habrá alguna función que arroje la hora y segundo?, he buscado y no he encontrado y esto es algo que me serviría para mi trabajo.

    • Diego
      existe la función TimeSerial cuyo argumento es hora, minuto y segundo:
      x = TimeSerial(a,b,c)

      ahora si ya se tiene ese "numero x" que corresponde a una determinada hora
      utilizas
      Hour(x), Minute(x) ó second(x) y obtienes hora, minuto o segundo.
      Prueba con z = Now() y con la diferencia con x obtienes "tiempo transcurido hasta el momento"

      Suerte Doc

  5. Según entiendo la funcion DAY devuelve el numero del dia a que corresponde la fecha indicada, mientras que el macro ha contabilizado el numero de celdas ocupadas den la columna fecha (COLUMNA 2), para luego ejecutar la funcion DAY por cada fecha y devolver el resultado en la columna DIA (COLUMNA 3)

  6. Muy bueno

  7. Muy buena la funcion, solo le agregaria un boton para actualizar los datos (cargar la macro), de la columna C.

  8. Quisiera saber por qué no funciona la función day si pongo una fecha de la siguiente forma: 11.10.2011

  9. En qué otros casos se podría utilizar esta función, no entiendo muy bien la importancia, si ya tenemos la fecha, para que sería necesario tener el día, sien la fecha ya está el día y el mes.

  10. Interesante la función.
    Qué función se podría añadir para que la macro funcione si decides añadir filas antes del encabezado?

  11. Me parece interesante la función, creo que es aplicable a cualquier ámbito laboral por ejemplo en las finanzas se puede calcular cuántos días falta para que venza un préstamo.

  12. La función está interesante, pero sería bueno que se pudiera especificar el detalle de cada línea de comando (para los que estamos iniciando), porque si las fechas están en otras celdas no se ejecuta la función.

  13. siempre que se quiera hacer que el excel cuente la cantidad final de columnas debe ser escrita asi: Cells(Rows.Count, 2).End(xlUp).Row o basta con poner Cells(Rows.Count, 2)?

    • Buenas es necesario que sea completo Cells(Rows.Count, 2).End(xlUp).Row y si deseas el ultimo valor de esa columna sería Cells(Rows.Count, 2).End(xlUp)

      Espero que te sirva mi respuesta.

  14. La función DAY es interesante debido a que se pueden agregar una cantidad infinita de filas con el comando ult = Cells(Rows.Count, 2).End(xlUp).Row, luego se utiliza For...to.....Next y sigue Dia = Day(Cells(i, 2)) ; Cells(i, 3) = Dia. Tengo dos consultas:

    Para hallar ult siempre se debe colocar por defecto End(xlUp).Row?

    En vez de primero asignar una variable "día" podría hacer lo siguiente, Cells(i, 3) = Day(Cells(i, 2))??

  15. La función "day" es interesante pero tengo dos consultas con respecto a su formulación:

    Cuando definimos ult = Cells(Rows.Count, 2).End(xlUp).Row, siempre se debe colocar por defecto End(xlUp).Row o en este caso tiene una función especial?

    En vez de definir Dia = Day(Cells(i, 2)) ; Cells(i, 3) = Dia, podría definirlo de la siguiente forma, Cells(i, 3) = Day(Cells(i, 2))???

  16. La funcion es muy útil, sin embargo, solo se puede usar para las líneas/columnas en las que se ha establecido la tabla.
    Me parece que se tendría que cambiar el código cada vez que se trate con una tabla diferente (ubicada en otro lugar, con la columna de fecha en otra posición, etc). Mi pregunta es si hay alguna forma de escanear las columnas de una tabla en busca de la columna de las fechas y obtener el día en la columna final de la tabla, por ejemplo.

    • En ese caso solo se tendrán que contar la celda en la cual quieres que aparezcan el número de días, pero la función te facilita en caso sean 50000 fechas por ejemplo.

  17. Todo me parece muy bien, pero si utilizo la fórmula: day(), y la jalo no obtengo el mismo resultado? Entonces cómo esta macro mejora el uso del excel?

    • Creo que la primera diferencia es que el dato obtenido con la macro es un valor y no una formula por cada celda en la que es aplicada.
      Lo segundo es que en general al aplicar una macro que como resultado va a generar un valor y no una formula por cada celda hace que nuestro archivo Excel sea más ligero.

    • El uso de macros disminuye los pasos a seguir con respecto a una fórmula, sólo con Ctrl+... , a mi parecer es más fácil.

  18. Interesante la función "day" especialmente para los que recién iniciamos. Probé utilizando nuevos valores a las celda B y funcionó, pero no se porqué la función arroja 30 días cuando la celda a evaluar está vacía.

  19. Creo que la primera diferencia es que el dato obtenido con la macro es un valor y no una formula por cada celda en la que es aplicada.
    Lo segundo es que en general al aplicar una macro que como resultado va a generar un valor y no una formula por cada celda hace que nuestro archivo Excel sea más ligero.

  20. Buena función DAY bueno yo solo la empleaba de las funciones que tiene excel pero no lo havia visto en una macro de esa manera buena info

Página de comentarios 1 de 2
1 2

Deja una respuesta

Los campos requeridos estan marcados con *.