- ベストアンサー
Excel 月末の最終営業日の日付を表示させたい
A1 B1 7/31 8/29 ↑このようにA1に月末日付をいれると、翌月の最終営業日(土日休みなので)を表示させたいです。 関数で可能でしょうか? おわかりの方教えてくださーい!
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
=IF(MOD(EOMONTH(A1,1),7)>1,EOMONTH(A1,1),IF(MOD(EOMONTH(A1,1),7)=1,EOMONTH(A1,1)-2,EOMONTH(A1,1)-1)) ちなみに、セル A1 は「月末日付」である必要はなく、何日でも構いません。2008/7/1 であっても、上式は 2008/8/29 を返します。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17070)
ユーザー関数を作ると 標準モジュールに Function matu(m) For i = DateSerial(2008, m + 1, 1) - 1 To DateSerial(2008, m, 1) Step -1 If Not (Weekday(i) = 1 Or Weekday(i) = 7) Then matu = i Exit Function End If Next i End Function ーーーー 例データ A列は当月月数を入れる場合 A列 B列 1 2008/1/31 2 2008/2/29 3 2008/3/31 4 2008/4/30 5 2008/5/30 6 2008/6/30 7 2008/7/31 8 2008/8/29 9 2008/9/30 10 2008/10/31 11 2008/11/28 12 2008/12/31 B1には=matu(A1) と入れて下方向に式を複写。 ーーー 前月中の日付を入れるなら A列 B列 2008/1/23 2008/2/29 2008/2/24 2008/3/31 2008/3/25 2008/4/30 2008/4/26 2008/5/30 2008/5/27 2008/6/30 2008/6/28 2008/7/31 2008/7/29 2008/8/29 B列は=matu2(A1) 標準モジュールのコードは Function matu2(d) m = Month(d) m = m + 1 For i = DateSerial(2008, m + 1, 1) - 1 To DateSerial(2008, m, 1) Step -1 If Not (Weekday(i) = 1 Or Weekday(i) = 7) Then matu2 = i Exit Function End If Next i End Function に変える。
お礼
ご親切にありがとうございました。
- mshr1962
- ベストアンサー率39% (7417/18945)
翌月の月末日付は =DATE(YEAR(A1),MONTH(A1)+2,0) で土、日の場合ずらすとなると =DATE(YEAR(A1),MONTH(A1)+2,0)-MAX(WEEKDAY(DATE(YEAR(A1),MONTH(A1)+2,0),2)-5,0) ※現状では26日以降の休日は無いのでこれで対応できます。 または =WORKDAY(DATE(YEAR(A1),MONTH(A1)+2,1),-1,休日の一覧) ※「ツール」「アドイン」「分析ツール」にチェックが必要です。
お礼
ご親切にありがとうございました。
- hallo-2007
- ベストアンサー率41% (888/2115)
A1 B1 8/31 8/29 で? =IF(WEEKDAY(A1)=1,A1-2,IF(WEEKDAY(A1)=7,A1-1,A1))
お礼
ご親切にありがとうございました。
お礼
ご親切にありがとうございました。