
エクセル数式について教えてください。
数式「=REPT("期日は本日",ISNUMBER(FIND(JIS(TEXT(TODAY(),"m/d"))&"まで",CA31617)))」があります。
この数式はセル「CA31617」に本日の日付「8/31」が表示された時に
数式のセルに「期日は本日」と表示されます。
本日の日付より
セル「CA31617」に休日を除いた3日後の日付「9/5」
セル「CA31617」に休日を除いた2日後の日付「9/4」
セル「CA31617」に休日を除いた1日後の日付「9/1」
の場合に数式を設定しているセルに「期日が近いです」
と表示出来る方法を教えてください。
よろしくお願いします。
No.5ベストアンサー
- 回答日時:
No.4です。
前回回答の数式について、補足説明します。
ご質問者の説明からTODAY()および「CA31617」が土日祝日であることはないという前提で数式を作成しています。
このため、万一、TODAY()および「CA31617」が土日祝日であった場合、例えば「CA31617」に、「9/3まで」と入力されていて、TODAY()が本日(2023/9/1)だったら、土日祝日の日数は無視されるので、「期日は本日」が表示されます。
また、万一、「CA31617」が「9/4まで」と入力されていて、2023/9/2(土)に休日出勤して、当該EXCELを開くと、期限について表示されるセルに「期日は本日」が表示されます。
これは、土日祝日は日数に含めないという計算方法のためです。
つまり、期日については、日付が一致しているかではなく、営業日数が本日を含めて何日あるかで判断する数式になっているということです。
No.4
- 回答日時:
>セル「CA31617」に休日を除いた3日後の日付「9/5」
>セル「CA31617」に休日を除いた2日後の日付「9/4」
>セル「CA31617」に休日を除いた1日後の日付「9/1」
>の場合に数式を設定しているセルに「期日が近いです」と表示出来る方法
とのことですが、そもそも「CA31617」には「○月○日まで」の情報しかないとすると越年のプロジェクトに対応できないのではないですか?
例えば、12月末に「CA31617」が「1月4日まで」となっていたら、「2023年1月4日」なのか「2024年1月4日」なのか判別する手段がないので、「2024年1月4日」と見做して「期日が近いです」と表示するのか、期日を大幅に経過しているので何等かのアラートを出すべきなのか判断できないことになりませんか?
「CA31617」は人手で入力しているようなので、入力ミスも発生すると思います。何故年号を省略して入力しているのか判りません。
仮に本年11月1日に①「1月15日まで」と入力された場合と②「2023/1/15まで」と入力された場合を考えると、②はもしかすると「2023/11/15」または「2024/1/15」の誤りなのではないかと気づく余地がありますが、①の場合、年号がないので間違いを疑うこともできません。
「CA31617」はNo.1さんも指摘しておられますが、「2023/8/31」のように入力することにして、表示形式を「m/d"まで」としておけば「CA31617」の中身はシリアル値です。その上で、「期日は本日」と表示したいセルに、
=IFERROR(CHOOSE(NETWORKDAYS(TODAY(),CA31617,祝日),"期日は本日","期日が近い","期日が近い","期日が近い"),"")
という数式を入れればご質問者のご希望は解決することになります。
これを「CA31617」が「8/31まで」と入力されているとすると、同じことをするのに、
=IFERROR(CHOOSE(NETWORKDAYS(TODAY(),EDATE(SUBSTITUTE(CA31617,"まで","")*1,(TODAY()>SUBSTITUTE(CA31617,"まで","")*1)*12),祝日),"期日は本日","期日が近い","期日が近い","期日が近い"),"")
という長い数式になってしまいます。
※上記数式中の「祝日」は「祝日」と名前を付けた範囲に土日以外の祝日一覧があるものとして数式を作成しています。
余計なお世話ですが、ご質問者はやや複雑なEXCELのシステムを作成していて、数式やVBAで疑問が湧く都度、このサイトでご質問されているのではないかと推測します。
その時点で最適な回答であっても、その後、「もっとこうしたい」というニーズが発生したとき、以前の回答をそのまま使い続けることがよいのかどうかという疑問が湧きます。
今回も、No.1さんが、REPT関数を使っている意図はなんですか?TEXT関数ではダメですか?という疑問を述べておられます。
また、一つのEXCELによるシステムの部分部分を異なる回答者による回答を繋ぎ合わせて作成すると、ご質問者のEXCELのスキルレベルが、
>以前質問をさせて頂いた時に教えて頂いた数式ですので私は判断がつきません。
というレベルだとすると、それぞれの最適解を求めた結果が全体最適にはならないという「合成の誤謬」に陥る懸念もあるので心配です。
No.2
- 回答日時:
ワークシート関数の組み合わせで実現するには複雑すぎて無謀だと思います。
ユーザー定義関数を使う例です。
手順
1)ブックを開いて[Alt]+[F11]
2)[挿入]→[標準モジュール]
3)右側のエディタエリアに下記コードを貼り付け
Function kijitu(kDay As String) As String
Dim xMon As Integer
Dim xDay As Integer
kijitu = ""
If Right(kDay, 2) = "まで" Then
kDay = StrConv(Left(kDay, Len(kDay) - 2), vbNarrow)
Else
MsgBox ("「X月X日まで」の様式ではありません")
Exit Function
End If
xMon = Val(Left(kDay, InStr(kDay, "/") - 1))
xDay = Val(Right(kDay, Len(kDay) - InStr(kDay, "/")))
If Date = DateSerial(Year(Now), xMon, xDay) Then
kijitu = "期日は本日"
Exit Function
End If
If WorksheetFunction.WorkDay(Date, 4) > DateSerial(Year(Now), xMon, xDay) Then
kijitu = "期日が近いです"
Exit Function
End If
End Function
これでkijitu関数が使えるようになります。
どこかのセルに =kijitu(CA31617) を入れてみてください。
ただし、祝祭日は
> 「休日」のセルB1:M135
の様式が分からないので対応していません。
上記コード中
If WorksheetFunction.WorkDay(Date, 4,XXXX)
のXXXX部分に工夫すれば、可能かもしれません。
No.1
- 回答日時:
いくつか整理しなければならない事柄があります。
> 本日の日付「8/31」が表示された時に数式のセルに「期日は本日」と表示されます。
とありますが、表示さません。セル「CA31617」に「8/31まで」と表示されたときに「期日は本日」と表示されます。
> 休日を除いた
とありますが、休日の内容を示してください。
例えば、今年の9月22日の「休日を除いた3日後」は何月何日ですか?
同じく9月9日の休日を除いた1日後の日付は何月何日ですか?
REPT関数を使っている意図はなんですか?
TEXT関数ではダメですか?
セル「CA31617」に入っている日付が全角でなければなりませんか?
たとえば値を2023/08/31として、書式設定で m/d"まで" などとしてはいけませんか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルについて教えてください。 1 2021/11/25 16:34
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/01/10 09:15
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/28 08:59
- 会計ソフト・業務用ソフト エクセルについて教えてください。 1 2021/12/03 10:08
- Excel(エクセル) エクセルの数式について教えてください。 1 2023/03/21 09:46
- Excel(エクセル) エクセルの数式で教えてください。 4 2023/06/27 09:56
- Excel(エクセル) 【Excel質問】 「本日の日付」から指定条件を満たす営業日経過後の日数を表示させる関数式 3 2022/06/06 23:28
- Excel(エクセル) ある日付から3年以内であれば【〇】を自動的に表示させる 4 2021/12/09 16:41
- Excel(エクセル) エクセルの数式で教えてください。 3 2022/12/22 17:29
- Excel(エクセル) エクセルの数式で教えてください。 5 2023/10/17 18:01
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・昔のあなたへのアドバイス
- ・字面がカッコいい英単語
- ・許せない心理テスト
- ・歩いた自慢大会
- ・「I love you」 をかっこよく翻訳してみてください
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・はじめての旅行はどこに行きましたか?
- ・準・究極の選択
- ・この人頭いいなと思ったエピソード
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
貼り付けで複数セルに貼り付けたい
-
エクセルで指定したセルのどれ...
-
枠に収まらない文字を非表示に...
-
excelの特定のセルの隣のセル指...
-
セルをクリック⇒そのセルに入力...
-
数式を残したまま、別のセルに...
-
【エクセル】IF関数 Aまたは...
-
対象セル内(複数)が埋まった...
-
(Excel)数字記入セルの数値の後...
-
【Excel】 セルの色での判断は...
-
エクセルの書式設定の表示形式...
-
複数のセルのいずれかに数字が...
-
Excel 例A(1+9) のように番地の...
-
エクセルの一つのセルに複数の...
-
EXCEL VBA セルに既に入...
-
Excelでのコメント表示位置
-
Excel2003 の『コメント』の編...
-
Excelで数式内の文字色を一部だ...
-
VBAでセルを指定した画像のコピ...
-
VBAでの結合セルのコピー&ペー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで指定したセルのどれ...
-
貼り付けで複数セルに貼り付けたい
-
excelの特定のセルの隣のセル指...
-
【Excel】 セルの色での判断は...
-
枠に収まらない文字を非表示に...
-
(Excel)数字記入セルの数値の後...
-
EXCEL VBA セルに既に入...
-
【エクセル】IF関数 Aまたは...
-
Excelでのコメント表示位置
-
エクセルの一つのセルに複数の...
-
セルをクリック⇒そのセルに入力...
-
エクセル オートフィルタで絞...
-
エクセルの書式設定の表示形式...
-
対象セル内(複数)が埋まった...
-
数式を残したまま、別のセルに...
-
Excelで数式内の文字色を一部だ...
-
Excel 例A(1+9) のように番地の...
-
エクセルのセルの枠を超えて文...
-
Excelで、「特定のセル」に入力...
-
エクセル “13ヶ月”を“1年1ヶ月...
おすすめ情報
回答ありがとうございます。
申し訳ありませんでした。
セル「CA31617」に「8/31まで」と表示されたときに「期日は本日」と表示されます。
です。
今年の9月22日の「休日を除いた3日後」は9月26日となります(9月22日当日も含めての3日後の計算になります。)
又、基本は、「WORKDAY」ですが、その他の休日として、同じブックのシート名「休日」のセルB1:M135には「日・土・祭日」を除いた自分で決めた休日を設定しております。
REPT関数を使っている意図はなんですか?
TEXT関数ではダメですか?
の件ですが、以前質問をさせて頂いた時に教えて頂いた数式ですので
私は判断がつきません。申し訳ありません。
セル「CA31617」に入っている日付が全角でなければなりませんか?
たとえば値を2023/08/31として、書式設定で m/d"まで" などとしてはいけませんか?
の件ですが、私以外の者が入力しており、常に大文字入力にしておりますので「JIS」を設定しております。
解決方法をよろしくお願いします。