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

2021/1/1から2カ月後(+60日で6/30)のなかで最も遅い木曜日(6/24)、またその日が祝日の場合は前日を表示する式を教えていただけないでしょうか。よろしくお願いします。

A 回答 (3件)

No1です



一点、注意を忘れていました。

Workday関数を利用すると、土日も対象から外されるので、もしも月~木が祝日の4連休の場合は、前週の金曜日が算出されることになります。
ご質問の内容からすると、結果は日曜日になるのが正しいと思われるところですけれど・・・

とは言え、現在、日本で決められている祝日では、祝日のみでは3連休が限度なので、今のところはNo1の計算で問題ないものと考えられます。
将来的に、4連休が可能になったような場合には、上記のようなことが起こり得ることをご記憶ください。
    • good
    • 0
この回答へのお礼

色々と説明不足、例の誤りがあり、申し訳ありませんでした。おっしゃる通り、2カ月以内のため2カ月-1日として、求めていた日付を出すことができました。4連休祝日の件まで考慮いただき本当にありがとうございました。

お礼日時:2021/06/07 14:48

「代わりに作れ。

オレ様の成果として使ってやるwww」
なんて作業依頼の投稿じゃないよね?
それをやりたいのでしたら、有料で請け負ってくれるサイトを利用することを勧めます。
ここは自力で疑問を解決できるようになるためのアドバイスをもらう場所ですからね。
(代わりにやってもらう事は、疑問の先送りであり、解決ではない)

・・・本題・・・

手作業でやる時、どんな手順でやる?

その手順に沿った関数を作ればいいのです。

自分なら、
2か月後の曜日を確認して、その日が木曜日から何日目になるのかを計算して、その差の日数を引いた日を「最も遅い木曜日」と判断します。
(1/1日の2か月後は3月1日のはずで、6/30にはならないはずなんだけどねえ)

WEEKDAY関数を使うと、日付に対する曜日を調べることができる。
(TEXT関数でも曜日を取得できる
 =TEXT(60日後の日付,"aaa")
 など)
その曜日に応じて、金曜日、土曜日、日曜日、月曜日、火曜日、水曜日なら、
それぞれ、1日、2日、3日、4日、5日、6日前を求めればよいことになる。
(MATCH関数を使って曜日に対する数値を返せば、引き算が楽になるぞ。
 = 60日後の日付 - MATCH(60日後の曜日,{"木","金","土","日","月","火","水"}-1,0)
 など)

あとは、
祝日のリストを作り、
連続した祝日の日数をその右のセルに表示させ、
(2022/5/3 1 火 憲法記念日
 2022/5/4 2 水 みどりの日
 2022/5/5 3 木 こどもの日
 2022/7/18 1 月 海の日
 2022/8/11 1 木 山の日
 …な感じ)
その数字を、得られた日付のシリアル値から引く。
(そうして求められた日付の曜日が日曜日になっても知ったこっちゃない)

まあ、こんな感じで作る。
    • good
    • 0
この回答へのお礼

質問の仕方がなっておらず申し訳ありませんでした。おっしゃる通り、まずは自分で考えたところまでを記載し、わからない部分に対してアドバイスをいただくべきでした。今後質問させていただく際にはそのようにいたします。この度はご親切なご回答をありがとうございました。

お礼日時:2021/06/07 14:53

こんにちは



不明点が多いので、方法のみの回答です。
(質問者様の求める内容に合わせて調整してください)

>2021/1/1から2カ月後(+60日で6/30)~
普通に考えれば、2か月後は「2021/3/1」、6か月後でも「2021/7/1」となるので、「nヶ月後-1」日のことを意味しているのでしょうか?

nか月後の日付は、
 =EDATE(基準日, 月数)
で求められます。(1日前としたければ-1すれば良いです)

この日付から、その前の木曜日を求めるには、対象日の曜日から計算できるので
 =対象日-MOD(Weekday(対象日)-4,7)
とすれば、該当する木曜日が求められます。
結果として、上記を合成すると、
 =EDATE(対象日,月数)-MOD(WEEKDAY(EDATE(対象日,月数))-4,7)
のようになります。

祝日に関しては、エクセルには直接判定できる関数はありませんので、Workday関数を利用する際の要領で祝日リストを別に作成しておく必要があります。
>その日が祝日の場合は前日を表示する式~
上で求めた木曜日に対して、祝日リストを利用して
 =WORKDAY(該当木曜日+1,-1,祝日リスト)
とすることで求められます。
    • good
    • 0

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