Формат даты по всему миру в Excel
На Mac Mountain Lion, в США, я работаю над электронной таблицей с такими макросами, как
TEXT(TODAY(), "yyyy-mm-dd")&" is the date"
Проблема в том, что лист также используется на компьютерах с французским языком, где макрос ожидает
TEXT(TODAY(), "aaaa-mm-jj")&" is the date"
и отображает #VALUE
(поскольку a для annee/year и j для jour/day по-французски, а не y и d).
Есть ли способ - стиль макроса - сделать этот формат "гггг-мм-дд" более интернациональным или заставить Excel использовать формат "ymd" даже на Mac с использованием французской локали?
(если возможно, сделать это в той же ячейке, то есть без добавления новой ячейки с датой внутри, на которую есть ссылка в отображаемой ячейке, поскольку я хочу изменить лист как можно меньше)
2 ответа
Я только что написал свою собственную пользовательскую функцию как
Public Function DATE_FORMAT(dt as Date, fmt as String) as String
DATE_FORMAT = Format(dt, fmt)
End Function
Он использует тот факт, что VBA работает с языковым стандартом США всегда, поэтому я всегда могу использовать D
а также M
а также Y
как часть моей строки формата.
Затем вы можете использовать формулу Excel =DATE_FORMAT(A1, "YYYYMMDD")
даже за пределами США / Великобритании.
У меня та же проблема; вот ответ на мой запрос здесь
====================================
Private Sub Workbook_Open()
With Application
Select Case .International(xlDateOrder)
Case 0 'mdy
ThisWorkbook.Names("DateFormat").Value = _
.International(xlMonthCode) & _
.International(xlDateSeparator) & _
.International(xlDayCode) & _
.International(xlDateSeparator) & _
.International(xlYearCode) & _
.International(xlYearCode)
Case 1 'dmy
ThisWorkbook.Names("DateFormat").Value = _
.International(xlDayCode) & _
.International(xlDateSeparator) & _
.International(xlMonthCode) & _
.International(xlDateSeparator) & _
.International(xlYearCode) & _
.International(xlYearCode)
Case 2 'ymd
ThisWorkbook.Names("DateFormat").Value = _
.International(xlYearCode) & _
.International(xlYearCode) & _
.International(xlMonthCode) & _
.International(xlDateSeparator) & _
.International(xlDayCode)
End Select
End With
End Sub
Вам просто нужно определить имя "DateFormat" в книге, а затем использовать его в формулах как =TEXT(A1,DateFormat)
С уважением