ここから本文です

エクセルの日付関数について質問です。 A2セルに「20190305」や「20190320」や...

アバター

ID非公開さん

2019/4/1500:03:27

エクセルの日付関数について質問です。

A2セルに「20190305」や「20190320」や「20190331」などの文字列数字が入ります。

B2セルに「2019/03/05」や「2019/03/20」や「2019/03/31」などと、日付と判断される形式で表示するように式を組んでいますが、月末日だけは「土曜・日曜」の場合は翌営業日が表示されるようにしています。

=IF(TEXT(A2,"0000-00-00")*1<>EOMONTH(TEXT(A2,"0000-00-00")*1,0),TEXT(A2,"0000-00-00")*1,WORKDAY(TEXT(A2,"0000-00-00")*1-1,1))

上記の式では「TEXT(A2,"0000-00-00")*1」の部分を4回も繰り返していますが、もっと短いコンパクトな式にすることはできないでしょうか?

閲覧数:
130
回答数:
4
お礼:
250枚

違反報告

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

mac********さん

2019/4/1500:21:13

月末日はWORKDAY関数を使う必要があることから、最低3回の日付変換は必須ですね。

削除できる部分は、最初の条件式で翌日が1日かどうかで条件分岐することになります。

=IF(DAY(TEXT(A2,"0000-00-00")+1)<>1,TEXT(A2,"0000-00-00")*1,WORKDAY(TEXT(A2,"0000-00-00")*1-1,1))

アバター

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

2019/4/15 19:20:32

「IF(DAY(TEXT(A2,"0000-00-00")+1)<>1,」という方法は思い付きませんでした。
一番に回答いただき、大変参考になりましたので、ベストアンサーとさせていただきます。

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

1〜3件/3件中

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

all********さん

2019/4/1512:08:48

別のセルで 例 Ⅾ2
=TEXT(A2,"0-00-00")*1 とし下方向にコピー

=IF(D2<>EOMONTH(D2,0),D2,WORKDAY(D2-1,1))

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

  • 取り消す
  • キャンセル

t17********さん

2019/4/1511:22:34

=IFERROR(TEXT(A1+1,"0-00-00")-1,WORKDAY(TEXT(A1,"0-00-00"),1))

mar********さん

2019/4/1504:30:57

◆mac********さんの回答をお借りしまして、
=IF(DAY(TEXT(A2,"0-00-00")+1)=1,WORKDAY(TEXT(A2,"0-00-00")-1,1),TEXT(A2,"0-00-00")*1)

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

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

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

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

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

閉じる

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

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

閉じる