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=k …
ということです。
ツェラーの公式を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日 からということになりますが、それは、またいずれそういう質問もあるかもしれませんね。ヨーロッパでは、こういう計算は、歴史的に、古いようですね。
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% …
(2)http://cl.is.kyushu-u.ac.jp/Literacy/PP/H14/adp/ …
(3)http://www.geocities.jp/wepon_bafu/friday13.html
他多数出てきます。
ゆっくり考えたこと無いが、年-1は公式に出てきてない。
またガウス記号が公式には出てきていると思うが、質問の式には出ない。書き写し違いが無いですか。[ ]を()と見てしまっているとか。
年ー1は、1,2は前年の13,14月とするとあるので、そのことと関連するのかな。だとすると質問の公式は全的なものでない。
ーー
(3)が理屈も説明している。
エクセルにはガウス記号(”[ ]”はガウス記号といい、ある値について、それを超えない最大の整数値を表す際に用いられる。)は直接は使えない。正の場合はINT()関数で置き換える。
ーー
ModはMOD関数があり、書き方は=MOD(数、割る数・除数)で、あまりが出ます。
--
公式をエクセルに載せ(計算す)るにはどうするかなら、もう一度公式を良く考え、改めて質問したらどうですか。
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年からだと思います。
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さんの方がわかりやすいですね。
No.2
- 回答日時:
ツェラーの公式で求めることを
http://suika.fam.cx/~wakaba/-temp/wiki/wiki?%A5% …
問いておられるのかと・・・
エクセルで算出させるなら
1月1日の曜日限定で
A1に 西暦 (4桁)
B1に
=MOD(SUM(A1,INT((A1-1)/4),-INT((A1-1)/100),INT((A1-1)/400)),7)
日曜なら0、月は1、・・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの数式で教えてください。 3 2022/12/22 17:29
- Excel(エクセル) Excelの式を教えてください 5 2022/06/29 17:28
- Excel(エクセル) Excelのマクロについてご教授ください 2 2023/02/25 09:43
- Excel(エクセル) Excelで全クラスのランキング表を作成したい 4 2022/05/24 15:28
- Excel(エクセル) Excel教えてください。 下記のことが出来るのは、マクロですか?条件付き書式でしょうか、、?知恵を 5 2022/11/12 09:33
- Excel(エクセル) エクセルについて教えてください。 1 2023/03/03 08:38
- Excel(エクセル) エクセルの数式で教えてください。 3 2023/04/17 09:25
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/01/10 09:15
- その他(社会・学校・職場) 私、頑張りましたよね? 5 2023/05/06 22:05
- Excel(エクセル) 至急です><Excelの関数を教えてください。 2 2022/03/22 17:56
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで○ヶ月を○年○ヶ月に変換...
-
リンク元の日付が空白の時リン...
-
Excel2013 表示形式で「1,000...
-
エクセルの曜日表示が正しく表...
-
EXCELからCSVへ変換すると0が...
-
【エクセル】数値にスラッシュ...
-
Excelのセルに数字を入れるが、...
-
Excelで「20080707」を『2007/0...
-
EXCELで勝手に約分されてしまう
-
エクセルで日付を全角にしたい
-
EXCEL (0.5)の表示の仕方
-
エクセルで9と入力したら時刻...
-
斜線が入ったセルのカウント
-
【Excel】24:00と表示したい!
-
Excel 時間の表示形式 セルと...
-
睡眠時間の計算
-
EXCELで24時間表記を午前...
-
開始時刻+経過時間=終了時刻に...
-
エクセルの日付用の関数
-
エクセルで0101と入力→08年01月...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで○ヶ月を○年○ヶ月に変換...
-
リンク元の日付が空白の時リン...
-
Excelのセルに数字を入れるが、...
-
Excel2013 表示形式で「1,000...
-
Excelで「20080707」を『2007/0...
-
エクセルの曜日表示が正しく表...
-
斜線が入ったセルのカウント
-
【エクセル】数値にスラッシュ...
-
EXCELからCSVへ変換すると0が...
-
エクセルでアポストロフィーが...
-
エクセルで9と入力したら時刻...
-
エクセル 4ケタの数字を年月に...
-
EXCELで勝手に約分されてしまう
-
エクセルで日付を全角にしたい
-
EXCEL (0.5)の表示の仕方
-
Excelのセルの書式設定(100...
-
西暦から、曜日を表示⇒何も入力...
-
Excel 時間の表示形式 セルと...
-
【Excel】24:00と表示したい!
-
Excel 2010で軸の書式設定の変...
おすすめ情報