web-dev-qa-db-ja.com

Excelで世界中の日付形式

米国のロケールであるMacMountain Lionで、次のようなマクロを使用してスプレッドシートに取り組んでいます。

TEXT(TODAY(), "yyyy-mm-dd")&" is the date"

問題は、このシートがフランス語ロケールで設定されたコンピューターでも使用されていることです。

TEXT(TODAY(), "aaaa-mm-jj")&" is the date"

#VALUEを表示します(aannee/yearであり、jjour/dayフランス語ではなく、yおよびd)。

この「yyyy-mm-dd」形式をより国際的にする方法、またはフランス語ロケールを使用するMacでもExcelに「ymd」形式を使用させる方法(マクロスタイル)はありますか?

(可能であれば、同じセルでこれを実行します。つまり、シートの変更をできるだけ少なくしたいので、日付を含む新しいセルを追加せずに、表示されたセルで参照します)

2
Ring Ø

独自のユーザー定義関数を次のように記述しました

_Public Function DATE_FORMAT(dt as Date, fmt as String) as String
    DATE_FORMAT = Format(dt, fmt)
End Function
_

VBAは常にUSロケールで機能するという事実を利用しているため、フォーマット文字列の一部としていつでもDMYを使用できます。

その後、米国/英国以外のロケールでも、Excelの数式=DATE_FORMAT(A1, "YYYYMMDD")を使用できます。

1
MP24

私も同じ問題を抱えてる ;これが私のリクエストに投稿された答えです ここ

====================================
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)として使用するだけです。

よろしく

1
user279809