Excel Avanzado

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

Excel Avanzado
Logo Excel Avanzado

Función NumberFormat

| 2 comentarios

¿Qué es NUMBERFORMAT en VBA?

Numberformat es una función de VBA que nos permite modificar el formato de una fecha devolviendo un valor string* de la misma, de acuerdo a nuestro requerimientos.

Por ejemplo en excel usualmente el formato de fecha que aparece por default es “dd-mm-yyy”, pero usando el numberformat en VBA podemos obtener los siguientes resultados:

  • “mm-dd-yyyy”
  • “ddd-mm-yyyy”
  • “mmm-yyyy”
  • “ddd-mmm-yyyy”, etc.

Los formatos de fecha que podemos obtener oscilan entre los siguientes parámetros de acuerdo al lenguaje de referencia en VBA:

Años:

yyyy: aparecen los 4 dígitos del año

yy: aparecen los 2 últimos dígitos

Mes:

m: aparecen los números de los meses, en los casos del 1 al 9 aparece sin el cero adelante.

mm: aparece el número asignado al mes (del 1 al 12)

mmm: aparece la breviatura del nombre del mes (ejemplo: Abr)

mmmm: aparece el nombre completo del mes.

mmmmm: aparece la primera letra del nombre del mes (ejemplo: en el caso de Mayo aparece M)

Día:

d: aparecen los números de los días, en el caso del 1 al 9 sin el cero adelante.

dd: aparece los números de los días, del 1 al 31

ddd: aparece la abreviatura dle nombre del día (ejemplo: Lu)

dddd: aparece el nombre completo del día

En síntesis podemos obtener diferentes formatos de fecha dependiendo de lo que necesitemos.

*string: hace referencia a un tipo de variable que contiene texto.

 

Ejemplo de uso de NUMBERFORMAT en VBA

  1. Tenemos una base de datos con los nombres de 10 personas y sus dìas de nacimiento en el formato “dd-mm-yy”:Captura 236x300 Función NumberFormat
  2. Ingresamos a la ventana de VBA y digitamos lo siguiente:

Sub formatDates()
Dim ultmfila As Long
ultmfila = Hoja1.Cells(Rows.Count, 1).End(xlUp).Row
'MsgBox ultmfila
For i = 2 To ultmfila
'Cells(i, 2).NumberFormat = ("mm-dd-yyyy")
'Cells(i, 2).NumberFormat = ("ddd-mmm-yyyy")
'Cells(i, 2).NumberFormat = ("dd-mm-yyyy")
'Cells(i, 2).NumberFormat = ("mmm-yyyy")
'Cells(i, 2).NumberFormat = ("dd-yyyy")
Cells(i, 2).NumberFormat = ("yyyy-mmmmm-dd")
Next i
End Sub

Los comandos dim y as long nos permiten reconocer la dimensión de la tabla y reconocer hasta donde se tiene información. Luego con for indicamos a partir de donde queremos que se ejecuten los siguientes comandos (i=2 indica a partir de la segunda fila).

Los siguientes son ejemplos de los resultados de las fechas que salen ejecutando las diferentes filas:

ejm1 300x96 Función NumberFormat

ejm2 300x100 Función NumberFormat

ejm3 300x102 Función NumberFormat

Por: Priscila Condori

Descargar el ejemplo en Excel: Ejemplo NumberFormat

2 comentarios

  1. Buen día, me puede colaborar con una función que me inserte números (ceros) en unas posiciones específicas.

    Tengo estos ejemplos.

    1-4-986565

    Por lo general el número debe contener doce dígitos y me debe quedar (014000986565) sin guiones y con los ceros que hacen falta.

    dos antes del primer guión, en este caso debería ser 01
    uno después del primer guión, en este caso debería ser 4
    nueve números después del segundo guión - 000986565

    12-1-98656565

    Por lo general el número debe contener doce dígitos y me debe quedar (121098656565) sin guiones y con el cero que hace falta.

    dos antes del primer guión, en este caso debería ser 12
    uno después del primer guión, en este caso debería ser 1
    nueve números después del segundo guión - 098656565

  2. excelente, me permiti hacer el ejercicio e hice una modificación para tenerlo mas ilustrado, el cual comparto:

    Sub formatDates()
    Dim ultmfila As Long
    ultmfila = Hoja1.Cells(Rows.Count, 1).End(xlUp).Row
    'MsgBox ultmfila
    For i = 2 To ultmfila
    Cells(i, 2).NumberFormat = ("mm-dd-yyyy")
    Cells(i, 3).NumberFormat = ("ddd-mmm-yyyy")
    Cells(i, 4).NumberFormat = ("dd-mm-yyyy")
    Cells(i, 5).NumberFormat = ("mmm-yyyy")
    Cells(i, 6).NumberFormat = ("dd-yyyy")
    Cells(i, 7).NumberFormat = ("yyyy-mmmmm-dd")
    Cells(i, 8).NumberFormat = ("dddd"" ""dd"" de ""mmmm"" de ""yyyy")
    Next i
    End Sub

    el último deja la fecha de esta forma: Jueves 12 de octubre de 2000.

    saludos

Deja una respuesta

Los campos requeridos estan marcados con *.