¿Qué configuración regional utiliza Excel cuando escribe F como formato de fecha?

¿Qué configuración regional utiliza Excel cuando escribe F como formato de fecha?

Mi empresa crea herramientas de informes y uno de los formatos de exportación es Excel. Como nuestros clientes provienen de diferentes países, cuando generamos el archivo Excel utilizamos el formato local para mostrar las fechas usando el siguiente formateador:

[$-<locale here>]mmmm d, yyyy;@

Entonces, si la celda tiene la fecha 31/03/2020 y la configuración regional está configurada en Irlanda, se mostrará como 10 de marzo de 2020, pero si la configuración regional está configurada en España, mostrará el 10 de marzo de 2020.

Recibimos un informe de un cliente de que no estaba funcionando para ellos ya que su fecha 31/03/2020 se mostraba como 8 de marzo de 2020.

Tras una inspección más cercana, noté que su formateador aparecía como:

[$-,F]mmmm d, yyyy;@

Intenté encontrar qué es lo que realmente Excel intenta analizar allí o qué calendario o formateador de fecha está intentando usar para mostrar esa fecha falsa sin éxito. Obviamente necesitamos hacer un mejor trabajo para identificar la configuración regional del cliente, pero me pregunto si esto podría deberse a que el cliente tiene una configuración regional extraña en sus computadoras o simplemente algún código falso.

Esto sucedió en Excel 2013, pero también pude reproducirlo en Excel 365. También intenté ubicar cualquier código de país asociado con el valor hexadecimal de F, pero nada funcionó. Cuando ,se elimina, el formateador identifica F como el código de Francia y muestra el número de fecha correcto en francés: 30 de marzo de 2020.

Respuesta1

Hasta donde puedo decir [$-,F], lo que equivale a [$-F0000]convertir la fecha en un calendario lunar.

Quería ver qué representaban todas las demás letras en la misma situación, así que escribí esto:

Sub formatdates()


Dim ws As Worksheet

Set ws = Sheet1

Dim i As Integer

i = 1

Do While i < 27

    ws.Cells(i, 1) = "=TODAY"
    ws.Cells(i, 1).NumberFormat = "[$-," & Chr(64 + i) & "]dddd, mmmm dd, yyyy"
    ws.Cells(i, 2) = "[$-," & Chr(64 + i) & "]dddd, mmmm dd, yyyy"
    ws.Cells(i, 3) = ws.Cells(i, 1).NumberFormat

i = i + 1

Loop


End Sub

Puede usarlo en cualquier libro vacío. Mostrará la fecha actual usando cada una de las letras del alfabeto romano como un código de formato usado de manera similar a [$-,F] en su publicación. Estoy seguro de que hay más, pero estos fueron lo suficientemente instructivos como para investigar un poco.

Por ejemplo

  • [$-,F] le dará el calendario lunar, pero se mostrará en inglés, de modo que el quinto mes se muestra como junio.
  • [$-,G] te dará el Calendario Civil Indio (creo)
  • [$-,M] te dará el calendario persa (creo)
  • [$-,N] te dará el Calendario Hijri

ingrese la descripción de la imagen aquí

También tomé ellista de códigos de idiomadel enlace que @DavidPostill incluyó en su comentario (hayotros por ahí con listas más completasde códigos de país que también se pueden utilizar, creo).

Puse la tabla de códigos del enlace en el comentario anterior en la Hoja 2 y escribí esto para agregarlo al final de la tabla creada con la primera función anterior, solo por interés.

Sub formatdates2()


Dim ws As Worksheet

Set ws = Sheet1

Dim i As Integer
Dim r As Integer

r = 1

i = 28

Do While Sheet2.Cells(r, 1) <> ""

    ws.Cells(i, 1) = "=TODAY()"
    ws.Cells(i, 1).NumberFormat = "[$-" & Sheet2.Cells(r, 1) & "]dddd, mmmm dd, yyyy"
    ws.Cells(i, 2) = "[$-," & Sheet2.Cells(r, 1) & "]dddd, mmmm dd, yyyy"
    ws.Cells(i, 3) = ws.Cells(i, 1).NumberFormat
    ws.Cells(i, 4) = Sheet2.Cells(r, 2)

i = i + 1
r = r + 1

Loop


End Sub

Por lo que puedo decir, hay códigos de idioma (la última lista/función) y hay códigos de calendario (la primera función).

Creo que estás buscando códigos de idioma.

Pero es posible que tenga más éxito simplemente usando [$-x-sysdate], que es el código que se muestra cuando selecciono el formato requerido de la lista en "Fecha" en el cuadro de diálogo Formato de celdas y luego veo el mismo en la lista "Personalizado".

ingrese la descripción de la imagen aquí

información relacionada