Excel Avanzado

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

Excel Avanzado

Función Month en VBA

| 26 comentarios

Introducción:

La Función Month en VBA, apoya a captar el valor numérico que pertenece al mes a partir de una Celda que tiene un Fecha (Date_Value).

Utilización en Excel y VBA:

En Excel: se utiliza de la siguiente manera: "=MES(CELDA)", con ello capta de la Celda objetivo el valor número del mes. (Español)

Para programaciones en VBA se utilizará de la siguiente manera:

LMonth = Month ("12/08/2013")

Comparación de Uso en Excel y en VBA:

  • Uso en Excel está definido de la siguiente manera: Tenemos en el siguiente cuadro adjunto el Stock de Ingresos de Reposiciones, se requiere extraer el Mes, para filtrar de mejor manera y agrupar por dicho mes, se utiliza la función:

Captura Lógica Excel

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

Luego, se brinda Formato y se tiene el resultado Final:

Captura Data

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

  • Uso en VBA: Se Muestra  la siguiente Función en VBA que nos permite captar el Valor de Mes de cada Fecha de Ingreso, se combina dicha propiedad además de captar la última Fila para poder asegurar que capte todos los meses de un Stock con ingresos variables, es decir, con líneas variables. Macro_Funtion_Month

Captura Logica en VBA

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

26 comentarios

  1. Gracias a esta función pude extraer los meses de cumpleaños de mis compañeros de trabajo, dado que tenía las fechas en formato día mes y año, la dificultad era que tal como estaba este archivo lo podía ordenar en orden cronológico por año, pero no por mes; poder hacerlo con una macro me alivio mucho el trabajo.

  2. Que fórmula tan útil y sencilla para extraer la información deseada.

  3. Definitivamente comparto el hecho que esta funcion sencilla en apariencia puede ayudarnos en el análisis de información, hasta hace poco solia obtener esta información utilizando funciones de excel. Aqui el detalle:
    Sub ExtraerMesIn()
    'ExtraerMes para poder cruzar informacion con lista de IPM
    Range("K2").Select
    ActiveCell.FormulaR1C1 = "=MONTH(RC[-10])"
    Selection.Copy
    Dim UltLinea As Long
    UltLinea = Range("A" & Rows.Count).End(xlUp).Row
    Selection.AutoFill Destination:=Range("K2:K" & UltLinea)

    End Sub

    Ahora uso las funnciones VBA...Excelente

  4. Muy buena la función. Serviría bastante para evitar estar copiando las formulas de una hoja a otra o peor aun de un libro a otro. Sin embargo, al igual que la mayoría, seria mejor si nos indica que quiere decir cada instrucción. Cuando use la macros en otra hoja los datos se van a la columna H, ¿Como puedo hacer para cambiarlo?

    • estimado, tendrías que modificar la instrucción de la linea 6, "cells(y,8)= mes", donde el numero 8 hace referencia de la columna donde se van a pegar los datos, es decir si quieres que se muestre el dato NO en la columna H sino en la columna B la instrucción seria:

      cells(y,2) = mes

  5. Me parece una herramienta muy util para seleccionar informacion,sobre todo si se puede replicar para otras variables como dias o años. Debo confesar que no me quedo muy claro para que sirve el comando:
    ult = Cells(Rows.Count, 1).End(xlUp).Row

  6. Con respecto al código tengo una pregunta:
    con Dim mes as String se declara la variable "mes".
    "ult" tambien es una variable, según lo que veo, pero esta variable nunca fue declarada.
    Quisiera saber ¿por qué? y ¿cuándo es necesario declarar una variable y cuándo no?

  7. Util la función ya que algunas veces es mas práctico ver directamente el mes que se desea.Intenté que me arroje el numero de mes para cualquier fila ( como la fila 55 por ejm) de la columna D usando el comado parecido a la funcion day pero no me funcionó.

    Sub Funcion_Month()
    ult = Cells(Rows.Count, 2).End(xlUp).Row
    For Y = 2 To ult
    Mes = Month(Cells(Y, 4))

    Cells(Y, 8) = Mes

    Next

    End Sub

  8. Me parece una función muy interesante y me cae como anillo al dedo, en mi trabajo estoy encargada de ver los vencimientos de contratos de trabajadores mes a mes, esta herramienta definitivamente me facilitará el trabajo, teniendo en cuenta que la data que se maneja es bastante grande.

  9. Buena funcion me gusta como se emplean aparte que por ser solo datos numeros insertados a nuestro libro excel ya no dependemos de funciones y nuestro libro se hace mas ligero

  10. Es una función muy interesante y de gran utilidad que nos sirve para obtener el mes de una fecha especificada y tiene una gran variedad de aplicaciones, me sirvió para un ejemplo donde me pedían pegar solo el año ingresado por el usuario en un TextBox en el siguiente formato 01/12/2014, la cuestión era cómo podría copiar a una celda solo el mes y en otra celda solo el año:

    a lo cual una solución muy practica seria:

    utilizar las funciones Month y Year de VBA. Por ejemplos, las siguientes líneas colocarían el mes actual en la celda A1 y el año actual en la celda A2:

    Range(“A1″).Value = Month(Date)
    Range(“A2″).Value = Year(Date)

  11. La función month sirve para obtener el mes al que corresponde una fecha, esto puede servir para realizar registros y dividirlos por mes como por ejemplo en ventas, compras, pedidos, etc.

  12. Función muy útil que me sirvió para ordenar la agenda de cumpleaños por mes y organizar una reunión mensual. Solo una duda, ¿Cómo haría si quisiera obtener en vez de el número de mes, el nombre de dicho mes?

    • Como la función te da el número de dicho mes, lo que uno puede hacer de manera más simple es crear en una parte del libro de excel un recuadro con valores numéricos, Por ejemplo : 1 = Enero y así hasta diciembre. Con esto se crea una macro en donde cada vez que aparezca el número en el recuadro te bota al ejecutar la macro el mes en letras que corresponde al número indicado en la tabla.

  13. Hola, tengo una consulta sobre las macros de Day y Month, revisando el código encontre que ambas tienen la misma idea, pero en esta macro (Month) se declara a "Mes" como String. ¿Que diferencia hace que se declare "Mes" como String?.

  14. Soy un convencido que el Excel potenciado con la programación de macros usando VBA, es una herramienta muy útil. En el caso específico de esta función Month la he utilizado en bases de datos donde sabía el tamaño de la base sin embargo cuando se generan bases de datos de tamaño variable y se desea aplicar esta función de manera automática la única forma de hacerlo es programando.
    En mi caso no soy programador y me cuesta poder entender la lógica de las tareas como por ejemplo el determinar la última fila o registro de una base de datos donde hay data que cambia mes a mes o cada vez que se obtiene..
    En este caso estoy memorizando el comando:
    ult = Cells(Rows.Count, 1).End(xlUp).Row
    pero creo que me sería más útil entender como se construye este comando.

    De la misma forma tengo una duda y espero alguien me pueda ayudar a aclararlo, en este foro se menciona que para VBA la función Month es
    LMonth = Month (“12/08/2013″)
    Sin embargo en la Macro se utiliza esta de la siguiente forma
    Mes = Month(Cells(Y, 4))

    sin la L de lante de la palabra Month. ¿Por qué, no lo se y agradeceré a quien me pueda ayudar a entender.

    Gracias

    Enrique Hoyos

  15. Es como la función Day pero para meses.

  16. Puedo concluir que el for.. next sirve para asegurar que se capten todas las filas donde, en el caso del ejemplo , se registren fechas de ingreso.

  17. Al igual que la función DAY, me quedo muy claro.

  18. Concuerdo con mis compañeros, esta función es como la de DAY. En este caso permite extraer el mes de un listado con fechas, de una forma rápida y sencilla.

  19. Una consulta.

    En el código se está declarando la variable Mes como texto

    >>Dim Mes As String

    Sin embargo las celdas donde escribimos estos valores tienen formato de Número. (H2:H6)

    Esto no resulta una inconsistencia en el tipo de datos?

    Finalmente los datos se escriben como Número y no como texto, ya que se puede hacer operaciones matemáticas haciendo referencia a estas celdas.

  20. Estimados:

    Hace unas horas lancé una consulta para todos los foristas, con la finalidad que me ayudaran a poder calcular una operación repetitiva para una base de datos de tamaño indeterminado.

    investigando en las Funciones de Excel Avanzado como la función Month he tomado parte del código y lo he aplicado a una UDF que creé para la tarea 2 .

    El código lo adjunto, debo resaltar que la función ValorResidual así como la que denomino Depunidprodmes (Depreciación unid prod mensual) son las UDFs creadas.

    Sub DepUP()

    ult = Cells(Rows.Count, 1).End(xlUp).Row

    For V = 3 To ult

    Res = ValorResidual(Cells(V, 3))

    Cells(V, 10) = Round(Res, 2)

    Next

    ult = Cells(Rows.Count, 1).End(xlUp).Row

    For D = 3 To ult

    Depmes = Depunidprodmes(Cells(D, 3), Cells(D, 4), Cells(D, 7), Cells(D, 5), Cells(D, 6))
    Cells(D, 11) = Depmes

    Next

    End Sub

    En realidad es una tarea muy simple y para más de uno de Uds. puede resultar obvio, pero al ser la primera vez que lo hago realmente me motiva a que otro compañero que no sepa como hacerlo se ayude de mi pequeño y elemental ejemplo.

    Definitivamente el definir UDFs y luego incluirlas en una rutina Macro es sumamente útil, por que de esta manera se automatizan tareas.

    Espero seguir avanzando y poderlo aplicar a mis tareas diarias.

    Gracias

    E Hoyos

Página de comentarios 1 de 2
1 2

Deja una respuesta

Los campos requeridos estan marcados con *.