• ベストアンサー

エクセル 日付の月の繰り上がりについて

第2金曜日に次の月に繰り上がるようなyy/mmの表示をさせたく思っています。 下記のようにするにはB列にどんな式を入れればよいでしょうか?(土日含まず) アドイン等を使わない方法があれば宜しくお願いします。 A列 B列 2003/1/9/木 0301 2003/1/10/金 0302 2003/1/14/火 0302 ~~~~~~~~~~ 2003/2/12/水 0302 2003/2/13/木 0302 2003/2/14/金 0303 2003/2/17/月 0303

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

  • ベストアンサー
noname#52504
noname#52504
回答No.2

挙動は#1さんのと一緒ですが、ご参考まで。 B1セル:  =DATE(YEAR(A1),MONTH(A1)+(INT(DAY(A1)/7)+(MOD(WEEKDAY(A1)-6,7)<MOD(DAY(A1),7))>=2),1) として下方にフィル。 ※ INT(DAY(A1)/7)  ⇒日数を7で割った商 MOD(WEEKDAY(A1)-6,7)<MOD(DAY(A1),7)  ⇒日数を7で割った余りの中に、金曜日が含まれるか否か ex. 当日が10日の土曜日  ⇒7日までに1回+直近3日(木,金,土)の中に1回

exceller20
質問者

お礼

分かりやすい解説ありがとうございました。 とても参考になりました。

その他の回答 (4)

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

#4です。ユーザー関数も大げさかと下記も考えました。 H列に番号を振るとしてH1は301、H2に =IF(A2=DATE(YEAR(A2),MONTH(A2),1)+(WEEKDAY(DATE(YEAR(A2),MONTH(A2),1))<7)*(6-WEEKDAY(DATE(YEAR(A2),MONTH(A2),1))+7)+(WEEKDAY(DATE(YEAR(A2),MONTH(A2),1))=7)*(WEEKDAY(DATE(YEAR(A2),MONTH(A2),1))+6),MAX($H$1:H1)+1,H1) 既回答より長すぎて、これでは失格ですね。 第2金曜日になると1繰り上げることを式にしただけだが。 第2金曜日の捉え方が複雑になるわけです。

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

既回答では、式を理解することが相当難しく、エクセル関数の難しい問題の回答の常連の方の回答が多い。 ーー 別の方法(ユーザー関数)でやってみました シートでALT+F11 その画面のメニューで挿入ー標準モジュール 出出た画面に下記貼り付け Function wn(a) f = DateSerial(Year(a), Month(a), 1) n = DateSerial(Year(a), Month(a) + 1, 0) k = 0 For i = f To n If Weekday(i) = 6 Then k = k + 1 '-- If k = 2 Then wn = i Exit Function End If '-- End If Next i End Function ーー シートのA列に日付が入っているとき D列D1でスタート番号 D2に =IF(A2=wn(A2),MAX($D$1:D1)+1,D1) と入れて下方向に式複写。 結果 一部抜粋 2007/1/10 水 301 2007/1/11 木 301 2007/1/12 金 302 2007/1/13 土 302 ーー 2007/2/7 水 302 2007/2/8 木 302 2007/2/9 金 303 2007/2/10 土 303

exceller20
質問者

お礼

ありがとうございました。 エクセルの式だけだと難しいですがプログラムだと分かりやすいですね。この説明でようやく理解できました。

noname#176215
noname#176215
回答No.3

基準となる日を変えると もう少し短くなります。 =DATE(YEAR(A1),MONTH(A1)+(A1>=A1-DAY(A1)-WEEKDAY(A1-DAY(A1)-4,3)+7*2),1)

exceller20
質問者

お礼

どうもありがとうございました。 シンプルになりなんとなく理解できそうです。

noname#204879
noname#204879
回答No.1

B1: =DATE(YEAR(A1),MONTH(A1)+(A1>=DATE(YEAR(A1),MONTH(A1),14-WEEKDAY(DATE(YEAR(A1),MONTH(A1),-4),3))),1)

exceller20
質問者

お礼

早速のご回答ありがとうございました。 複雑で私の頭では理解が難しいですが、使わせてください。

関連するQ&A