Excel Avanzado

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

Excel Avanzado
Day

Evaluacion del dia con la Función Day

| 38 Comments

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

Evaluacion del dia con Day

Por: Christian Gózar

38 Comments

  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 buena la funcion, solo le agregaria un boton para actualizar los datos (cargar la macro), de la columna C.

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

  8. 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.

  9. 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?

  10. 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.

  11. 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.

  12. 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.

  13. 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))??

  14. 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))???

  15. 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.

  16. 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.

  17. 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.

  18. 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.

  19. 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

  20. Muy útil para aplicar en informes de personal. Además de un comando seleccionado se puede ahorrar la función para consecutivos ingresos. Afirmar que no solamente se realiza por columnas si también filas.

    Muchas gracias

  21. Al probar la funcion DAY aplica adicionando más filas al final o insertando filas, ademas al cambiar el formato de fecha también emite el día, pero no corre la macro cuando se adiciona una columna. Al parecer el comnado “For i = 2 To ult” tiene que ver con esta limitante. Si esta instrucción eligiera la columna en donde se encuentran las fechas, estaria aun mejor, esto con el fin de automatizar todo lo necesario.

  22. Esta función es muy interesante y se podría emplear para poder restar fechas complementados con las funciones mes y año.

    Por ejemplo: =Año(A1-A2) -1900&” años “&mes(A1-A2)-1&” meses “&dia(A1-A2)&” dias” asi podemos obtener el tiempo diferenciado entre dos fechas…

    Saludos

  23. Los comandos son los siguientes :

    ult = Cells(Rows.Count, 2).End(xlUp).Row
    For i = 2 To ult
    Dia = Day(Cells(i, 2))
    Cells(i, 3) = Dia

    Lo que pude entender es que la función day va utilizar los datos de la columna 2 hasta su última fila ocupada ,y colocar los valores en la fila 3.

  24. aplicable para contabilizar cuantos días de mora tiene un prestatario.

  25. Descargué el ejemplo y al añadir otra fila con una fecha distinta pude comprobar que al ejecutar la macro incluye la fecha de la fila añadida y arroja el día en la tercera columna. Esto es gracias a la instrucción For… Next que ordena que se itere desde la segunda fila de la segunda columna hasta la última fila donde encuentre fecha también en la segunda columna

  26. descargue el ejemplo

  27. Muy buen ejemplo, aplicable a muchas tareas. Me quedo muy claro-

  28. Encuentro la función DAY muy útil. Debe tenerse cuidado con el parámetro que se usa para esta función pues este debe ser exclusivamente una fecha.

  29. Cual es la diferencia con usar la función día que te lo da en automático el excel, osea que ventaja ofrece la macross respecto al excel en está función.
    Saludos,
    José Angel Cevallos Rivas

  30. la función es interesante porque lo hace mas rápido y sencillo para sacar un resultado en excel.

  31. Muy aplicativa la funcion, pero desearia saber si ademas de poner el dia del mes ponemos la hora con sus respectivpos minutos y segundos nos de como resultado el dia y la hora exacta

Deja un comentario

Required fields are marked *.


Excel Avanzado located at , Lima, Perú . Reviewed by usuarios rated: 4.7 / 5