Excelでセルに曜日名を取得するにはどうすればよいですか?


回答:


54

簡単な例:

A1セル:1/8/2009
B1セル:= TEXT(WEEKDAY(A1)、 "dddd")

これは、指定された日付に対して、対応する日を印刷します。

これはあなたが望んだことですか?


どうもありがとう!小さな誤字:中央にセミコロンがあり、コンマにする必要があります。
ドンヴィンス

@Don Vince-アップ、ごめんなさい。
ルーク

2
小数点記号にコンマを使用するローカリゼーション(Windowsの地域設定)ではセミコロンが必要です。英語の1,000.00(千)が1.000,00と記述されているため、Excelで1000,00と入力される言語のように。私は実際にセミコロンが常に受け入れられると思っていましたが、それについて間違っているかもしれません。
アルジャン

あなただ歓迎:)、正しい答えがupvote +1値する

4
これは、1/1/1900が日曜日であることの奇妙さのためにのみ機能しています。平日機能を完全に失い、単に= TEXT(A1、 "dddd")を使用します(以下の私の完全な回答を参照)
AdamV 2009年

19

上記の答えは、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をうるう年ではない場合に扱います。


編集する前に既に賛成しました。今ではさらに良くなっています。
ジェローンヴィルトプルイマーズ

7

別の可能性は、後で日付をどうするかによって異なりますが、セルの形式をカスタムに設定することです:dddd


見事!それはトリックを行い、別の列を使用したくない状況に最適です。おかげで
ドンヴィンス

別の列を使用する場合でも、これを実行=A1して、最初の回答の例のように単純に式を入力できます。
アルジャン

5

ネスト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文字の略語を出力します。


1

フォーマットの前に[$ nnn]を使用して回答をローカライズすることもできます(したがって、カスタムコードは[$ nnn] dddd; @)。nnnを適切な言語コードに変更します。私はリストを持っていませんが、どういうわけか、英語コードは-409(そして私のローカルは-421)です。

数値形式を試し、言語フィールドを変更してから、カスタム形式に戻すことができると思います。


1
SuperUserへようこそ。回答は常に自己完結型である必要があるため、回答を実際の例に展開してください。また、あなたがどこから来たのかもわからないので、私の地元は少し不明確です。
ティム

1

A1セル:1/8/2009 B1セル:= A1次にctrl + 1(セルのフォーマット)を押して番号タブを選択し、カスタムをクリックして、タイプtxtboxに「DDDD」と入力します。


0

現在の日付を表示します

=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")

これは、以前のいくつかの回答の単なる複製です。
fixer1234

0

セルの書式設定-日付-カレンダーの種類(グレゴリオ暦の英語を選択)-種類(セクションに必要な書式が2001年3月14日水曜日)


0

WEEKDAY関数は、Vbaコードで使用できます。例えば ​​:

Label1.Caption = WeekdayName(Weekday(TextBox1, 0), False, 0)

上記の例では、曜日名はTextBox1から取得されます。結果は「月曜日」です。

右クリックメニューでアクティブセルへの日付入力に関するユーザーフォームを作成したときに、この関数を使用しました。

ここでテンプレートを確認できます


提案:質問の直接的な回答部分であるあなたの回答のユニークな点は、平日ではなく、平日です。これが最初の文で注目すべき用語です。
fixer1234
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.