回答:
簡単な例:
A1セル:1/8/2009
B1セル:= TEXT(WEEKDAY(A1)、 "dddd")
これは、指定された日付に対して、対応する日を印刷します。
これはあなたが望んだことですか?
上記の答えは、1900年1月1日が日曜日であるとExcelが判断し、デフォルトではExcelがWeekday関数の週の最初の日として日曜日を使用しているため、フルークでのみ機能します。
このメソッドで実際に計算しているのは、数値としての曜日であり、日付として解釈されるその数値に基づいて曜日としてフォーマットします。たとえば、日付が2003年1月2日で、WEEKDAY関数を使用すると、7(=土曜日)になります。これを「dddd」としてフォーマットすると、実際には「エポック」以来の7日目の曜日名、つまり7/1/1900が土曜日になります*。1904年1月1日は日曜日ではなく金曜日だったため、1904ベースの日付システムを使用するオプションが選択されているユーザーが開くと、この数式は壊れます。(はい、私はほとんど誰もそれを使用していませんが、それに依存するソリューションを構築したくないのですか?)
次を使用するだけで、式をより短く、より速く、より堅牢にすることができます
=TEXT(A1,"dddd")
もちろん、これを別の列で本当に必要とするかどうかに応じて、既に提案されているカスタム形式で日付セル自体をフォーマットすることもできます。私はよく次のような日付形式を使用します
ddd dd mmm yyyy
たとえば、2003年2月1日土曜日を指定すると、日付は明示されますが、曜日名も表示されます。
2番目の列とTEXT関数を使用することは、通貨などの場合と同様に、たとえば差し込み印刷のどこかで明示的に平日を使用する場合に不可欠です。Excel> Wordマージでは、 -画面形式のバージョン。したがって、セルの形式に関係なく、Wordには恐ろしい数字が表示されます。真のテキストフィールドは「そのまま」渡され、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文字の略語を出力します。
フォーマットの前に[$ nnn]を使用して回答をローカライズすることもできます(したがって、カスタムコードは[$ nnn] dddd; @)。nnnを適切な言語コードに変更します。私はリストを持っていませんが、どういうわけか、英語コードは-409(そして私のローカルは-421)です。
数値形式を試し、言語フィールドを変更してから、カスタム形式に戻すことができると思います。
A1セル:1/8/2009 B1セル:= A1次にctrl + 1(セルのフォーマット)を押して番号タブを選択し、カスタムをクリックして、タイプtxtboxに「DDDD」と入力します。
WEEKDAY関数は、Vbaコードで使用できます。例えば :
Label1.Caption = WeekdayName(Weekday(TextBox1, 0), False, 0)
上記の例では、曜日名はTextBox1から取得されます。結果は「月曜日」です。
右クリックメニューでアクティブセルへの日付入力に関するユーザーフォームを作成したときに、この関数を使用しました。