• ベストアンサー

エクセル 月の第○週が何日までか

セルA1に「2013」 セルB1に「12」 と入力されています。 セルC1に2013年12月の第1週目の最後の日付を表示するにはどうしたらいいのでしょうか? 上記の例では、表示は「7」です。 同様に、セルD1、E1、F1にそれぞれ2週目の最後の日付、3週目の・・・という風に表示させたいです。 G1セルには31と表示させたいです。

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

  • ベストアンサー
回答No.3

No.1 です。すみません、うっかり第 6 週を忘れてしまいました。 先ほどの数式では、第 5 週が「0」かつ第 6 週が「28」という結果になり得てしまうので、次式に差替えをお願いいたします。「(b1<>0)*」を挿入しただけです。 C1 =(b1<>0)*(b1<>day(date($A1,$B1+1,0)))*min(8-weekday(date($A1,$B1,1))+7*(columns($C1:c1)-1),day(date($A1,$B1+1,0))) C1 をコピーし C1:H3 に貼り付け。ゼロを非表示にする方法は、No.1 を読んでください。

tatataas
質問者

お礼

回答ありがとうございます!!出来ました!!(こぴぺしただけですが・・・) 会社の勤務管理表を作っていて、今回の質問が出来る必要がありました。 この式にたどり着けるまで、自力だと5時間くらいみっちり考えないと 出てこなそうです(笑) まだ理解できてませんが、おいおい考えます。 ありがとうございます。

その他の回答 (5)

回答No.6

No.3 です。 ゼロを消す書式記号を「0;0;」と書きましたが、どちらかといえば「0;-0;」などとしないと、符号がなくなってしまいますね。 けれど今回、そもそも負数になることはあり得ないので、「0;;」だけで十分でした。 本題に関係ないことを含めてつまらないケアレスミスを連発してしまい、申し訳ありませんでした。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.5

>G1セルには31と表示させたいです。 との事ですが、月によっては第5土曜日が存在する月もありますから、月末の日付はH1セルに表示させる様にした方が良いと思います。  まず、C1セルに次の様な関数を入力して下さい。 =IF(ISNUMBER(($A1&"/"&$B1&"/"&7*COLUMNS($C:C)-WEEKDAY(DATE($A1,$B1,1))+1)+0),DATE($A1,$B1,7*COLUMNS($C:C)-WEEKDAY(DATE($A1,$B1,1))+1),"")  次に、H1セルに次の様な関数を入力して下さい。 =IF(ISNUMBER(($A1&"/"&$B1&"/1")+0),DAY(DATE($A1,$B1+1,)),"")  そして、C1セルをコピーして、D1~G1の範囲に貼り付けて下さい。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.4

通常で考えれば、7,14,21,28と固定の数字となり 最後にうるう年でない2月以外で29,30,31のいづれかだと思うのですが。。。 G1セルだけでいいなら =IF(AND(MOD(A1,4)>0,B1=2),"",DAY(DATE(A1,B1+1,0)))

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! >2013年12月の第1週目の最後の日付 とは毎週土曜日の日付、 >G1セルには31 すなわち、G1セルにはその月の月末の日付! という解釈でよろしいのでしょうか? もしそうであれば月によっては6週ある月がある場合がありますので、 H1セルまで表示させる場合もあると思います。 一例です。 どこか使っていないセルに =EOMONTH(DATE(A1,B1,1),-1)-WEEKDAY(EOMONTH(DATE(A1,B1,1),-1)-5,3) という数式を入れておきます。 これでA1セル年のB1セル月の前月の最終土曜日のシリアル値が表示されます。 これを利用すれば、後は単純に「7」ずつプラスしていけば毎週土曜日のシリアル値が表示されます。 仮に上記数式をK1セルに入れた場合は C1セル(セルの表示形式はユーザー定義から d としておきます)に =IF(MONTH($K1+7*COLUMN(A1))=$B1,$K1+7*COLUMN(A1),IF(B1=EOMONTH($K1,1),"",EOMONTH($K1,1))) という数式を入れH1セルまでオートフィルでコピーしてみてください。 ※ 解釈が間違っていたらごめんなさいね。m(_ _)m

tatataas
質問者

お礼

回答ありがとうございます。 その解釈であってます。 なるほど。こういう考え方もあるのですね。 いろいろ変えて実験してみます!

回答No.1

週が日曜日から始まり土曜日で終わるカレンダーを想定し、7 日未満となる場合も第 1 週として認めるなら、次式。 C1 =(b1<>day(date($A1,$B1+1,0)))*min(8-weekday(date($A1,$B1,1))+7*(columns($C1:c1)-1),day(date($A1,$B1+1,0))) C1 セルをコピーし C1:G2 のセル範囲に貼り付け。添付図のように、第 4 週の土曜日が 2 月 28 日で第 5 週が存在しない場合に算出されるゼロを非表示にするため、セルの書式を「0;0;」などに設定。

関連するQ&A