Формат даты по всему миру в 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)

С уважением

Другие вопросы по тегам