アプリ版:「スタンプのみでお礼する」機能のリリースについて

A1   B1
7/31  8/29

↑このようにA1に月末日付をいれると、翌月の最終営業日(土日休みなので)を表示させたいです。
関数で可能でしょうか?
おわかりの方教えてくださーい!

A 回答 (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 を返します。
    • good
    • 0
この回答へのお礼

ご親切にありがとうございました。

お礼日時:2008/07/24 14:23

ユーザー関数を作ると


標準モジュールに
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列
12008/1/31
22008/2/29
32008/3/31
42008/4/30
52008/5/30
62008/6/30
72008/7/31
82008/8/29
92008/9/30
102008/10/31
112008/11/28
122008/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
に変える。
    • good
    • 0
この回答へのお礼

ご親切にありがとうございました。

お礼日時:2008/07/24 14:22

翌月の月末日付は


=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,休日の一覧)
※「ツール」「アドイン」「分析ツール」にチェックが必要です。
    • good
    • 0
この回答へのお礼

ご親切にありがとうございました。

お礼日時:2008/07/24 14:24

A1   B1


8/31  8/29
で?
=IF(WEEKDAY(A1)=1,A1-2,IF(WEEKDAY(A1)=7,A1-1,A1))
    • good
    • 1
この回答へのお礼

ご親切にありがとうございました。

お礼日時:2008/07/24 14:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!