ここから本文です

=WORKDAY(EOMONTH(A2,0)+1,-1,休日)としたのですが、 ①の段階で既に、何度やって...

sgk********さん

2018/9/1601:50:58

=WORKDAY(EOMONTH(A2,0)+1,-1,休日)としたのですが、
①の段階で既に、何度やってもうまくいかず、どうかご教授をお願いします。

①A2に入力した「翌月の1日(ただし、翌月の1日が土・日・祝日・休日の場合は、前倒した平日)」を当月度として取得したいです。
例えば、11月1日(木)が入力された場合は10月度として11月1日(木)を返し,12月1日(土)が入力された場合は11月度として11月30日(金)を返したいのですが、うまくいきません。

②さらに、休日(12/29~1/6)指定をしている12月度だけは、通常通りの12月28日(金)を返すのではなく、1月最初の営業日である1月7日(月)を返したいのです。

どうかご教授のほどよろしくお願いします。

補足書き方が悪くてすみません。

条件を整理します。

×月2日~×月の翌月1日までを×月度。
月度内(×月の翌月1日も含む)は締め日を翌月1日。
ただし、翌月1日に土日がきた場合は、前営業日を締め日。
また、12月度のみ年末年始休暇後(12/29~1/6)の翌営業日を締め日としたいです。

この質問は、活躍中のチエリアン・専門家に回答をリクエストしました。

閲覧数:
119
回答数:
5

違反報告

ベストアンサーに選ばれた回答

mit********さん

2018/9/1607:26:53

お示しの=WORKDAY(EOMONTH(A2,0)+1,-1,休日)の式を入力してもエラーになるのでしたら式の中の休日の使い方が間違っています。
この式で休日と入力する場合にはどこか別の場所に、例えばF1セルから下方に祝日や特別休日の日付を入力します。12/29から1/6まで休みでしたらそれらの日付も入力します。その後にそれらの範囲を選択してから「数式」メニューの「名前の定義」をクリックします。
名前の窓には 休日 と入力してOKします。
このようにあるデータの範囲を指定して名前を付けることでその名前を式の中で使うことができるようになります。
お示しの式でも日付が表示されるようになるでしょう。
しかし式の中でEOMONTH関数を使っていますが間違っています。
A2セルから下方に日付が入力されているとしてB2セルには次の式を入力して下方にドラッグコピーすればよいでしょう。

=IF(A2="","",WORKDAY(A2+IF(COUNTIF(休日,A2),0,IF(WEEKDAY(A2)=1,-3,IF(WEEKDAY(A2)=7,-2,-1))),1,休日))

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2018/9/17 15:11:51

補足や返信で、最後までおつきあいいただき、ありがとうございました。
おかげで望んだ締め日を得ることが出来ました。
ありがとうございました!!

ベストアンサー以外の回答

1〜4件/4件中

並び替え:回答日時の
新しい順
|古い順

プロフィール画像

カテゴリマスター

tai********さん

リクエストマッチ

2018/9/1612:00:15

質問に矛盾があるので回答もまちまち、

<>翌月の1日(ただし、翌月の1日が土・日・祝日・休日の場合は、前倒した平日)>

なので11月1日と入力したら12月1日(土)の前倒しで11月30日となるのではないですか?

<11月1日(木)が入力された場合は10月度として11月1日(木)を返し>

はおかしいですね。





<12月1日(土)が入力された場合は11月度として11月30日(金)を返したい>

これも

<12月度だけは、通常通りの12月28日(金)を返すのではなく、1月最初の営業日である1月7日(月)を返したい>

と違います。


gru********さんの回答が一番近いような気がしますが休日の設定を工夫しないとうまくいかないと思います。


=WORKDAY(EOMONTH(A2,0)+2,(MONTH(A2)=12)*2-1,休日)

として休日の範囲を

休日 18年
2018/01/01 月 元日
2018/01/08 月 成人の日
2018/02/11 日 建国記念の日
2018/02/12 月 振替休日
2018/03/21 水 春分の日
2018/04/29 日 昭和の日
2018/04/30 月 振替休日
2018/05/03 木 憲法記念日
2018/05/04 金 みどりの日
2018/05/05 土 こどもの日
2018/07/16 月 海の日
2018/08/11 土 山の日
2018/09/17 月 敬老の日
2018/09/23 日 秋分の日
2018/09/24 月 振替休日
2018/10/08 月 体育の日
2018/11/03 土 文化の日
2018/11/23 金 勤労感謝の日
2018/12/23 日 天皇誕生日
2018/12/24 月 振替休日
2018/12/29 土 会社休み
2018/12/30 日 会社休み
2018/12/31 月 会社休み
2019/01/01 火 会社休み
2019/01/02 水 会社休み
2019/01/03 木 会社休み
2019/01/04 金 会社休み
2019/01/05 土 会社休み
2019/01/06 日 会社休み
2019/01/14 月 成人の日
2019/02/11 月 建国記念の日
2019/03/21 木 春分の日
2019/04/29 月 昭和の日
2019/05/03 金 憲法記念日
2019/05/04 土 みどりの日
2019/05/05 日 こどもの日
2019/05/06 月 振替休日


などと設定します。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

プロフィール画像

カテゴリマスター

gru********さん

リクエストマッチ

2018/9/1606:32:12

WORKDAY(EOMONTH(A2,0)+1,-1,休日) というのは、「A2の翌月1日の1営業日前」ですから、A2の当月最終営業日を返してしまいます。ここは「翌月2日の1営業日前」であるべき。

=workday(eomonth(A2, 0)+2, -1, 休日)

で、month(A2) が12のときだけは前ではなく後ろに移動したいのなら、-1を+1に切り替える算段をします。まぁ本当は「大晦日の翌営業日」ってするべきだけど、どうせ休みとわかってるのでインチキしてもいいでしょう。

=workday(eomonth(A2, 0)+2, if(month(A2)=12, 1,-1), 休日)

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

lun********さん

2018/9/1606:03:31

1行目は無視して下さい。

次の場合
B2に
=IF(MONTH(A2)=1,WORKDAY(EOMONTH(A2,-1)-1,1,休日),WORKDAY(EOMONTH(A2,-1)+2,-1,休日))

3行目以下は一覧にしただけです。

1行目は無視して下さい。

次の場合
B2に...

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

nou********さん

2018/9/1602:18:50

Workdayの、使い方、
間違えてませんか?

https://dekiru.net/article/4411/


文字列で、「休日」と、
入れるのでは、無いですよ。


範囲指定か、定数配列か、日付文字列、
ですよね?


サンプル式、
=WORKDAY(EOMONTH(A1,0)+1,-1,{"2018/9/28","2018/9/27","2018/9/26"})

Workdayの、使い方、
間違えてませんか?...

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる