• ベストアンサー

Excel 元旦の曜日

Excel で、任意の年の元旦の曜日を表示させる数式は下記のとおりだという記事がありました。 (年 + ( 年 - 1 ) / 4 - ( 年 - 1 ) / 100 + ( 年 - 1 ) / 400 ) % 7 「年」のところはどう記入すればよいのか教えて下さい。よろしくお願いします。

  • awazo
  • お礼率97% (616/629)

質問者が選んだベストアンサー

  • ベストアンサー
  • maron--5
  • ベストアンサー率36% (321/877)
回答No.1

◆ご提示の式は少し、分かりかねますが ◆こんな方法はいかがでしょうか?     A     B 1   2007   月 ★A1に「年」を入力して B1=DATE(A1,1,1) ★表示形式をユーザー定義で、 aaa とします

awazo
質問者

お礼

maron--5さん ありがとうございました。 簡潔が最上、バッチリです。

その他の回答 (6)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.7

こんにちは。 私の#5の回答は、不勉強なもので、間違えていました。 #6 のimogasiさんのご回答で気が付きました。 =MOD(年-1+INT((年-1)/4)-INT((年-1)/100)+INT((年-1)/400)+INT(177/5)+1,7)+1 でした。 それと、 [XL2002] WEEKDAY 関数で 1900 年 3 月 1 日より前の正しい曜日が返らない http://support.microsoft.com/default.aspx?scid=kb;ja;JP106339 ということです。 ツェラーの公式をVBAに直してみました。たぶん良いと思います。 1900年のDate 関数は別として、上記の数式との矛盾は発生していません。 '標準モジュール Function Zeller(ByVal Y As Integer, ByVal M As Integer, D As Integer) As Integer  If M = 1 Or M = 2 Then   Y = Y - 1   M = M + 12  End If   Zeller = (Y + Y \ 4 - Y \ 100 + Y \ 400 + (13 * M + 8) \ 5 + D) Mod 7 End Function ※数式は、 =Zeller(年,1 ,1 ) +1 としています。「年」の説明は、#5 の通りです。 ところで、ユリウス暦は、一旦、ユリウス暦の日付に変換する必要があるわけですね。ユリウス暦は、紀元前4713年1月1日 からということになりますが、それは、またいずれそういう質問もあるかもしれませんね。ヨーロッパでは、こういう計算は、歴史的に、古いようですね。

awazo
質問者

お礼

Wendy02さん ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.6

エクセルの質問になってますが、エクセルとは関係がありません。 何でもエクセルの質問のタイプです。 エクセルは計算道具にしか過ぎません。 (1)エクセルは1900/1/1から9999/12/31目での日付を扱えます。エクセルは歴史的に主にビジネス計算向けなので、これでなんら不都合は無いはず。 10000/1/1はこの表示にはなるが、日付シリアル値に」なりませんので 日付の関数、数式、書式が使えません。 曜日は書式をaaaにするか、=TEXT(A1,"aaa")で出ます。 -- 質問の公式は ツェラーの公式 で (1)http://ja.wikipedia.org/wiki/%E3%83%84%E3%82%A7%E3%83%A9%E3%83%BC%E3%81%AE%E5%85%AC%E5%BC%8F (2)http://cl.is.kyushu-u.ac.jp/Literacy/PP/H14/adp/program/date.html (3)http://www.geocities.jp/wepon_bafu/friday13.html 他多数出てきます。 ゆっくり考えたこと無いが、年-1は公式に出てきてない。 またガウス記号が公式には出てきていると思うが、質問の式には出ない。書き写し違いが無いですか。[ ]を()と見てしまっているとか。 年ー1は、1,2は前年の13,14月とするとあるので、そのことと関連するのかな。だとすると質問の公式は全的なものでない。 ーー (3)が理屈も説明している。 エクセルにはガウス記号(”[ ]”はガウス記号といい、ある値について、それを超えない最大の整数値を表す際に用いられる。)は直接は使えない。正の場合はINT()関数で置き換える。 ーー ModはMOD関数があり、書き方は=MOD(数、割る数・除数)で、あまりが出ます。 -- 公式をエクセルに載せ(計算す)るにはどうするかなら、もう一度公式を良く考え、改めて質問したらどうですか。

awazo
質問者

お礼

imogasiさん ありがとうございました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんにちは。 私もツェラーの公式に当てはめてみました。 曜日=MOD(年+年/4-年/100+年/400+(13*月+8)/5+日),7) Excel関数で、1月1日は その前の年の13月という計算をしますから、 =MOD(INT((年-1)+(年-1)/4-(年-1)/100+(年-1)/100+21/5+4),7) +4 は、Excelの書式のための補正値です。(この方法が、正しいのかどうか分かりません)書式の曜日と合わせましたので、書式のユーザー定義の「aaa」や「ddd」 などに設定してください。 もちろん、[年]は、名前-定義で設定します。 適当なセルを指定して登録しておきます。 ただし、これは、1900年~2100年の200年間までしか確かめていません。過去に対しては、Excelはサポートされていません。この公式は、たぶん、グレゴレオ暦からだと思いますから、1582年10月15日以降、つまり、1583年からだと思います。

awazo
質問者

お礼

Wendy02さん ありがとうございました。

回答No.4

どうしても この形式でないといけないのでしょうか? WEEKDAY 関数を使えば 簡単に表示できますけれども。 たとえば A2のセルに下の式をかき、 =WEEKDAY(A1,1) A1のセルに 2007/1/1 と書けば A2のセルに 2 と答えが表示されます。 2は月曜日のことです。 これを踏まえて A9のセルに =WEEKDAY(CONCATENATE(A10,"/1/1"),1) と言う式を書いておいて A10に任意の年(西暦)を入れれば A9のセルに 数値が入ります。 1でしたら 日曜日、2でしたら 月曜日… ということになります。 なお CONCATENATEと言う関数は 複数の文字列を結合する関数だそうです。私も初めて知りました。 #1さんの方がわかりやすいですね。

awazo
質問者

お礼

tommy-pie83さん ありがとうございました。

  • DIooggooID
  • ベストアンサー率27% (1730/6405)
回答No.3

西暦 1900年 1月 1日は、日曜日です。 そこからどれだけ、ずれたかを計算しようとしています。 Windows 系の Excel では、1900年 1月 1日を シリアル値 1と決めているので、上式の年には、西暦を入れてください。 しかし、Mac系の Windows では、1904年 1月 1日を シリアル値 0と決めているので、上式の年には、西暦+5 を入れる必要があります。

awazo
質問者

お礼

DIooggooIDさん ありがとうございました。

  • redowl
  • ベストアンサー率43% (2140/4926)
回答No.2

ツェラーの公式で求めることを http://suika.fam.cx/~wakaba/-temp/wiki/wiki?%A5%C4%A5%A7%A5%E9%A1%BC%A4%CE%B8%F8%BC%B0 問いておられるのかと・・・ エクセルで算出させるなら 1月1日の曜日限定で A1に 西暦  (4桁) B1に  =MOD(SUM(A1,INT((A1-1)/4),-INT((A1-1)/100),INT((A1-1)/400)),7) 日曜なら0、月は1、・・・・

awazo
質問者

お礼

redowlさん ありがとうございました。

関連するQ&A

  • エクセル 曜日

    エクセルで曜日を表示する関数で悩んでいます。 =IF(ISBLANK(B1),"",DATE(2013,A1,B1)) こんなふうに入れたのですが、「41374」と表示されます。 A1には「4」、B1には「10」と入れたので、2013年4月10日の曜日、つまり「水」を表示させたかったのですが… 意味不明な数が出てきてしまいました。 別のシートでは、ちゃんと曜日が表示されているので、数式に誤りはないと思うのですが。 どうすればよいのでしょうか? 回答よろしくお願い致します。

  • 曜日の求め方

    (年 + ( 年 - 1 ) / 4 - ( 年 - 1 ) / 100 + ( 年 - 1 ) / 400 ) % 7; で、年の元旦の曜日を求められるんですが、 元旦以外の曜日を計算する方法はどの様にすればいいですか?

  • エクセルで曜日

    エクセルで日付けを入れた段階で 曜日まで表示させることはできますか? できれば 日付けを入れただけで、 曜日もはいるような形式にしたいのですが、 例:平成19年6月1日(金) すいませんがおしえてください。

  • エクセルで曜日を自動的に表示させたいです。

    よろしくお願いします。ややこしい質問ですが皆様の お知恵をお貸しいただきたいです。 1.A1に「2007」←年 2.B1に「1」←月 3.C1に「11」←日 以上のように入力したときにD1に曜日を表示させたいと思っています。表示形式は「月曜日」といった感じにしたいです。 どのような数式にしたらよろしいのでしょうか? また、D2・D3に指定した日の翌日、二日後の曜日を 表示させるときにD2・D3に入力すべき数式を教えていただきたいです。 さらに、可能であればD1に1月30日の曜日を表示させたとき D3は2月1日の曜日を表示すると思いますが、 月が変わるときは「表示しない」としたいです。 わがままな条件ばかりを羅列してしまいましたが、よろしくお願いします。 自分自身数式に関して無知な人間なので質問の難易度が解っていません、難しすぎたり簡単すぎたら申し訳ありません。

  • エクセルで(曜日)をあらわすには??

    エクセルで曜日を出すときに TODAY()を入れて ユーザー定義でaaaとするのはわかったのですが (金)とかという風に表示するのはどうしたらいいんですか?カッコの中に曜日を表示したいです。 教えてください。

  • excel 曜日表示

    EXCELで下記の説明から操作して年月日でーたから自動で曜日を表示させるようにしました。 結果 a1=2007年10月2日が a2=火でなければならないところ 月となりました。とりあえずは day(a1+1)で無理やり火と表示させたのですが、何が悪いのでしょうか。 よろしくお願いします。 (説明) ●表示形式を設定して曜日を表示する  日付に対応する曜日を表示する最も簡単な方法は、曜日の表示形式を設定することだ。曜日を表示したいセルに日付のシリアル値を入力あるいは参照して表示形式を表に示す記号を設定すればよい。 表『曜日の表示形式』  記号 表示スタイル  表示内容 ddd 英語の省略記号  Sun~Sat dddd 英語表記  Sunday~Saturday aaa 日本語の省略記号  日~土 aaaa 日本語表記  日曜日~土曜日 操作 通常は参照先のセルと同じ表示形式が自動設定されるが、参照式を入力するセルの表示形式がすでに設定変更されている場合は(2)のように自動設定されないが、続けて(3)以降の操作を行えば良い。 (1) 曜日を表示するセルに日付を参照する数式「=C12」を入力する (2) 参照先と同じ表示形式で値が表示される 操作 (1) 設定するセルを右クリックしてショートカットメニューを開く (2)[セルの書式設定]を選択する (3) セルの書式設定ダイアログボックスが開く (4)[表示形式]タブをクリックする (5)[ユーザー定義]をクリックする (6) 種類の欄をクリックして「aaa」を入力する (7)[OK]をクリックする (8) 曜日が表示される

  • エクセルの日付と曜日

    エクセル2003です セルに ○年○月○日○曜日と表示させるには ユーザー定義のところにどのように 入力すれば いいのでしょうか 教えてください

  • 曜日について

    今日の日付を自動入力するには、=TODAY()でいいとおもうのですが、曜日を自動入力で表示させるにはどういった数式を入れるといいでしょうか??

  • Excelで第一〇曜日を求める方法がわかりません

    初めて質問させていただきます。 Excelファイルで毎月お客様に送付状を作成しており、その送付状内に次月作業日程(何月何日何曜日)を載せて送付しております。 弊社は基本的に第1水曜日など曜日で定期日程を組んでいるお客様が多い状態です。 現在カレンダーと睨めっこしながら手入力しておりますが、自動表示したいです。 色々調べた結果 =DATE(YEAR(B2),MONTH(B2)+1,1)+7-WEEKDAY(DATE(YEAR(B2),MONTH(B2)+1,1),2)+1 の数式を使うとできるようなのですが、この数式だと第一週の始まりが日曜日に限定されている?ようです。 例えば、今月2012年10月の送付状を作る時、来月の日程が第一土曜日の場合。 =DATE(YEAR(B2),MONTH(B2)+1,1)+7-WEEKDAY(DATE(YEAR(B2),MONTH(B2)+1,1),2)+6 ※B2には2012/10/8と記入されている。 と入力すると、11月10日と第二土曜日が入力されてしまいます。 この部分を11月3日と表記されるように数式を入力したいのです。 何かいい方法はありませんでしょうか? 分かりにくい文章ですいません。宜しくお願いします。

  • エクセル関数を使って曜日表示

    エクセルのセル上に左から1~31まで数字を入力しています。 そのしたの行に、曜日を表示したいと思っています。 具体的には、○年○月というところに今の月を入力すれば、数字下のセルに曜日が表示されるものなんですが、関数をどのように使えばいいかわからなくて困ってます。 知っている方がいたら教えてください。

専門家に質問してみよう