ここから本文です

エクセルでその月の最終水曜日を求めるにはどうしたら良いか調べています。 A1セ...

nek********さん

2014/7/2718:14:18

エクセルでその月の最終水曜日を求めるにはどうしたら良いか調べています。
A1セルが年、B1セルが月の場合、下記の関数式で求められると知りました。
DATE(A1,B1+1,0)-MOD(WEEKDAY(DATE(A1,B1

+1,0))+3,7)

意味合いとしては、まずその月の月末の日付を求める、それからその月の末日の曜日を求める。
末日の日付に3を足して7で割った余りの数を末日から差し引くと言う事だと思うのですが、、。
どうして、末日に3を足して7で割った余りを末日の日付から差し引くと最終水曜日になるのかが分かりません。
そのため、例えば最終月曜ならどうするのか?とか応用が出来ずこまっています。どなたか分かりますでしょうか?

閲覧数:
5,801
回答数:
3
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

cat********さん

2014/7/2720:32:20

DATE(A1,B1+1,0)はその月の末日を返します
WEEKDAY関数は曜日を数値で返します
日曜日なら"1"を月曜日なら"2"を・・・土曜日なら"7"を返します

例えば、質問の式を3を足さない
=DATE(A1,B1+1,0)-MOD(WEEKDAY(DATE(A1,B1+1,0)),7)
のような式にすると最終土曜日を求めることができます

月末の曜日が日曜日の場合は、月末からWEEKDAY関数が返す値の"1"日分を引けば最終土曜日となり、月末が月曜日なら同じくWEEKDAY関数が返す値の"2"日分を引けば最終土曜日となり、月末が何曜日であっても最終土曜日を求める式になります。MOD関数を使って7で割った余りを使うのは、月末が土曜日の場合にWEEKDAY関数が返す値である"7"を引いてしまったら最終土曜日ではなくなってしまうため減算する値をゼロにするために使っています。

さて本題です、上の式は最終土曜日を求める式なので、基準を土曜日から水曜日にずらすためには、金木水と遡って3日分ずらせばいいことになります、

つまり最終水曜日を求める式なら
=DATE(A1,B1+1,0)-MOD(WEEKDAY(DATE(A1,B1+1,0))+3,7)
という式になり

最終月曜日を求める式なら、金木水火月と5日ずらした
=DATE(A1,B1+1,0)-MOD(WEEKDAY(DATE(A1,B1+1,0))+5,7)
という式になります

質問した人からのコメント

2014/7/30 06:52:24

感謝 丁寧な説明に感謝いたします。
実際に色々なぱたーんを組んでみたりして勉強させていただきました。
ありがとうございました。

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

nis********さん

2014/7/2719:37:38

C2=DATE(A2,B2+1,0)-WEEKDAY(DATE(A2,B2+1,0)-2,3)
下方へコピー(オートフィル)

C2=DATE(A2,B2+1,0)-WEEKDAY(DATE(A2,B2+1,0)-2,3)...

2014/7/2719:37:20

WEEKDAY関数の仕様は理解されていますか?
指定した日の曜日を求める関数です。
日曜日・・・1
月曜日・・・2
火曜日・・・3
水曜日・・・4
木曜日・・・5
金曜日・・・6
土曜日・・・7
末日の曜日により、それぞれの数値が返されます。
このWEEKDAY関数が一番重要です。

それぞれの曜日の数値に3を加えます。
日曜日・・・4
月曜日・・・5
火曜日・・・6
水曜日・・・7
木曜日・・・8
金曜日・・・9
土曜日・・・10

7で割った余りを求めます。
日曜日・・・4
月曜日・・・5
火曜日・・・6
水曜日・・・0
木曜日・・・1
金曜日・・・2
土曜日・・・3
これはすなわち末日から最終水曜日までの日数の差です。
つまり、
末日が日曜日の場合、月末から4日前が水曜日になります。
末日が月曜日の場合、月末から5日前が水曜日になります。
末日が火曜日の場合、月末から6日前が水曜日になります。
末日が水曜日の場合、月末から0日前が水曜日になります。
末日が木曜日の場合、月末から1日前が水曜日になります。
末日が金曜日の場合、月末から2日前が水曜日になります。
末日が土曜日の場合、月末から3日前が水曜日になります。
のように考えればいいだけです。

なので最終日曜日、月曜日、火曜日・・・は
=DATE(A1,B1+1,0)-MOD(WEEKDAY(DATE(A1,B1+1,0))+6,7)
=DATE(A1,B1+1,0)-MOD(WEEKDAY(DATE(A1,B1+1,0))+5,7)
=DATE(A1,B1+1,0)-MOD(WEEKDAY(DATE(A1,B1+1,0))+4,7)
=DATE(A1,B1+1,0)-MOD(WEEKDAY(DATE(A1,B1+1,0))+3,7)
=DATE(A1,B1+1,0)-MOD(WEEKDAY(DATE(A1,B1+1,0))+2,7)
=DATE(A1,B1+1,0)-MOD(WEEKDAY(DATE(A1,B1+1,0))+1,7)
=DATE(A1,B1+1,0)-MOD(WEEKDAY(DATE(A1,B1+1,0)),7)
となります。

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる