なぜなら、Excelは1900年1月1日が日曜日であると考えており、デフォルトでは、Weekday関数で日曜日を週の最初の日として使用しているからです。
この方法で実際に計算しているのは、曜日を数字として計算し、その数字を日付として解釈して、それを日としてフォーマットしていることです。例えば、日付が1/2/2003でWEEKDAY関数を使用した場合、これは7(=土曜日)という結果になります。これを “ddd "としてフォーマットすると、実際には、Excelの "エポック "以降の7日目の日の名前を取得していることになります。1904年1月1日は日曜日ではなく、金曜日だったので、1904年ベースの日付システムを使用するために選択されたオプションを持っている人がそれを開いた場合、この式は壊れてしまいます。(はい、私はほとんど誰もそれを使っていないことを知っていますが、あなたはそれに依存したソリューションを構築したくないでしょう?) 私はよく
=TEXT(A1,"dddd")
のような日付フォーマットを使用して、例えば Sat 01 Feb 2003 のように、日付は明示的ですが、平日の名前も表示します。
2番目のカラムとTEXT関数を使用することは、メールマージのどこかで曜日を明示的に使用したい場合(例えば)には必須で、通貨などの場合も同様です。真のテキストフィールドは「そのまま」渡され、Word で適切に表示されます。
¶*実際には月曜日ですが、ExcelはLotus 1-2-3で1900年をうるう年として扱っていたため、誤った日付と一致するように書かれていました。
IF
文を入れ子にするのは面倒ですが、うまくいきます。しかし、少しでも入力の手間を省きたい場合は、以下のようにしてみてください。
=CHOOSE(WEEKDAY(A2), "Sun","Mon","Tue","Wed","Thur","Fri","Sat")
=CHOOSE(WEEKDAY(A2), "Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday")
この例では、"A2 “は問題の日付を含むセル(または数式)であれば何でも構いません。例えば、以下のようになります。
=CHOOSE(WEEKDAY(TODAY()), "Sun","Mon","Tue","Wed","Thur","Fri","Sat")
とすると、今日が何であれ、3文字の略語が表示されます。
A1セル。2009年1月8日 B1セル:=A1を押して、Ctrl+1を押して(セルの書式設定)数字タブを選択し、カスタムをクリックして、タイプtxtボックスに “DDDDD "と入力してください。
また、書式の前に[$nnn]を使用して答えをローカライズすることもできます(カスタムコードは次のとおりです: [$nnn]ddd;@).nnnを適切な言語コードに変更します。
私は、Number形式で実験して、言語フィールドを変更して、カスタム形式に戻すことができると思います。
現在の日付を表示する
=TEXT(WEEKDAY(MONTH(TODAY())),"dddd")
現在の日付を必須のテキストで表示する。
=CHOOSE(WEEKDAY(MONTH(TODAY())), "S-U-N-D-A-Y","M-O-N-D-A-Y","T-U-E-S-D-A-Y","W-E-D-N-E-S-D-A-Y","T-H-R-S-D-A-Y","F-R-I-D-A-Y","S-A-T-U-R-D-A-Y")
``` 0x1&
WEEKDAY関数はVbaコードで使用することができます。例:
Label1.Caption = WeekdayName(Weekday(TextBox1, 0), False, 0)
上記の例では、テキストボックス1から曜日名を取得しています。結果は“Monday ”となります。
テンプレートのレビューはこちら