• ベストアンサー

入力日より、その月(もしくは翌月)の第2水曜を求めるには?

ExcelもしくはAccessで処理を考えています。 入力日より翌週水曜を求める方法は解決したのですが、 第2水曜、第4水曜など決められた週を判断させる方法が思いつかず困っています。 誰かお知恵を貸して下さい。 よろしくお願いいたします。

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

  • ベストアンサー
  • dejiji-
  • ベストアンサー率38% (327/858)
回答No.2

第2水曜日だと、8日から14日の間に入るので、その日付の中から選択するとか? 参考のURLで解決できませんか。

参考URL:
http://www2.odn.ne.jp/excel/index.html
hhayato10
質問者

お礼

たくさんの書き込みありがとうございます。 この処理は顧客別の締め日&支払日処理条件の一例であり、その他にも条件が100パターンぐらいあります。 後々は注文日から締め日&支払日を自動判断させ、なるべくオペレータの方の入力作業を減らそうというのが最終目的です。 (とりあえず今回は、支払日の求め方から解決しているところです。) この質問は NO.2 dejiji-さんの参考URL分を採用し解決いたしました。 [解決方法] ●A2セルに入力日(注文日)を入力 「第2水曜日」 =DATE(YEAR(A2),MONTH(A2),2*7-WEEKDAY(DATE(YEAR(A2),MONTH(A2),-4),1)) 「第4水曜日」 =DATE(YEAR(A2),MONTH(A2),4*7-WEEKDAY(DATE(YEAR(A2),MONTH(A2),-4),1)) ・・・これをデータベース化するのが目標なんですが、なんせパターンが多すぎて後回しにしてます。 また、次回の質問で書き込みを行ないたいと思いますので宜しくお願いいたします。

その他の回答 (3)

回答No.4

C1セルに曜日の数字(0:日曜日,1:月曜日,2:火曜日,3:水曜日.4:木曜日,5:金曜日,6:土曜日) ↓ C1セルに曜日の数字(1:日曜日,2:月曜日,3:火曜日,4:水曜日.5:木曜日,6:金曜日,7:土曜日) に訂正してください。 ちょっと質問を読み返して、 >ExcelもしくはAccessで処理 もしかしてVBAですか? >第2水曜、第4水曜など決められた週を判断させる方法 入力された日から求める? 判断させる? 私の回答は見当違い?と思ってもいます。 もし、違う場合は、遠慮なく補足してください。 一応VBA wk_date = Range("A7") wk_yy = Year(wk_date) '入力した日付から年を取得 wk_mm = Month(wk_date) '入力した日付から月を取得 wk_ww = 2 '取得したい週(2週目) wk_we = 4 '取得したい曜日(1:日曜日 2:月曜日・・・) wk_1we = Weekday(DateSerial(wk_yy, wk_mm, 1)) '入力日の月の1日の曜日 wk_day = 7 * Int((wk_ww + Int(wk_1we - wk_we - 1) / 7)) + wk_we + 1 - wk_1we MsgBox wk_day で出来ると思います。 後、他の質問で話題に上がったのですが、 (1)1週目 1~7日、2週目 8~14日 で固定 (2)1週目 カレンダーの1行目(今月は1~5日)    2週目 カレンダーの2行目(今月は6~12日) のどちらを考えているかで代わってしまいます。 私の回答は(1)を対象としています。

hhayato10
質問者

お礼

たくさんの書き込みありがとうございます。 この処理は顧客別の締め日&支払日処理条件の一例であり、その他にも条件が100パターンぐらいあります。 後々は注文日から締め日&支払日を自動判断させ、なるべくオペレータの方の入力作業を減らそうというのが最終目的です。 (とりあえず今回は、支払日の求め方から解決しているところです。) この質問は NO.2 dejiji-さんの参考URL分を採用し解決いたしました。 [解決方法] ●A2セルに入力日(注文日)を入力 「第2水曜日」 =DATE(YEAR(A2),MONTH(A2),2*7-WEEKDAY(DATE(YEAR(A2),MONTH(A2),-4),1)) 「第4水曜日」 =DATE(YEAR(A2),MONTH(A2),4*7-WEEKDAY(DATE(YEAR(A2),MONTH(A2),-4),1)) ・・・これをデータベース化するのが目標なんですが、なんせパターンが多すぎて後回しにしてます。 また、次回の質問で書き込みを行ないたいと思いますので宜しくお願いいたします。

回答No.3

A1セルに何週目(数字) C1セルに曜日の数字(0:日曜日,1:月曜日,2:火曜日,3:水曜日.4:木曜日,5:金曜日,6:土曜日) 分かり易いように B1セルは文字列(週目) D1セルには=CHOOSE(C1,"日","月","火","水","木","金","土")&"曜日" と入れます。 この例だと 2 週目 4 水曜日となります。(2週目の水曜日) A2セルに 求めたい年月(例えば[2002/10]→実際には2002/10/1の事)   [Oct-02]と表示されると思うので「セルの書式設定」で年月表示(2002年10月)に変更 B2セルに =7*($A$1+INT((WEEKDAY(A2)-$C$1-1)/7))+$C$1+1-WEEKDAY(A2) と入力すると[9]と表示されます。 直接 =7*(2+INT((WEEKDAY(A2)-4)/7))+4+1-WEEKDAY(A2) や =7*(2+INT((WEEKDAY(DATEVALUE("2002/10/1"))-4)/7))+4+1-WEEKDAY(DATEVALUE("2002/10/1")) でも構いません (修正が面倒ですし、2,4という数字が何かわかりにくいのでセルに表示しています) A1セルとC1セルを変更してもうまくいくはずです(4週目4水曜日) おかしければ、補足してください。

回答No.1

Excelで特定の月の第2水曜を求める例です。 1行目 A1: =D1&text(B1, "aaa") B1: 求める月の1日 (2002/11/01など) C1: =weekday(B1,1) D1: 1 2行目~31行まで A2: =D2&text(B2, "aaa") B2: =B1+1 C2: =weekday(B2,1) D2: =if(C2<C1, D1+1, D1) これでA列に"1金"のように第xy曜を表す文字列が生成されますので、当該月の 第2水曜の日付は =vlookup("2水", A1:D31, 2, FALSE) となります。

hhayato10
質問者

お礼

たくさんの書き込みありがとうございます。 この処理は顧客別の締め日&支払日処理条件の一例であり、その他にも条件が100パターンぐらいあります。 後々は注文日から締め日&支払日を自動判断させ、なるべくオペレータの方の入力作業を減らそうというのが最終目的です。 (とりあえず今回は、支払日の求め方から解決しているところです。) この質問は NO.2 dejiji-さんの参考URL分を採用し解決いたしました。 [解決方法] ●A2セルに入力日(注文日)を入力 「第2水曜日」 =DATE(YEAR(A2),MONTH(A2),2*7-WEEKDAY(DATE(YEAR(A2),MONTH(A2),-4),1)) 「第4水曜日」 =DATE(YEAR(A2),MONTH(A2),4*7-WEEKDAY(DATE(YEAR(A2),MONTH(A2),-4),1)) ・・・これをデータベース化するのが目標なんですが、なんせパターンが多すぎて後回しにしてます。 また、次回の質問で書き込みを行ないたいと思いますので宜しくお願いいたします。

関連するQ&A