dポイントプレゼントキャンペーン実施中!

下図のような表において、A列のNo、B列の処置日はランダムに続きます。同じNoで違う処置日もある条件で、C列に、「同じNoで、最も早い処置日から90日間処置日が記録されなければ、最も早い処置日に「+」を表示し、それ以外は「-」を表示したい時、どのような数式を使えばよいでしょうか?

「EXCELで次の数式を教えてください。」の質問画像

質問者からの補足コメント

  • 複数の方から、早々のご助言ありがとうございます。返信遅れてしまい失礼いたします。
    図の例で行くと3行目の352(処置日2021/12/4)は、その後7行目の同Noで2022/2/1と90日以内の処置がありますので”-”となります。7行目はその後90日以内の処置が無いので”+”となります。「同じNoで90日以内の最新の処置日が”+”となる」といったほうがわかりやすいでしょうか?
    ご丁寧にアドバイスいただき大変ありがたく思います。どうかよろしくお願いします。

      補足日時:2022/11/28 20:11
  • 同じNoで同日複数回の処置はありません。ですので上記のケースは①が当てはまると思いますが、入力してみるとエラーメッセージ(#VALUE!)されてしまいます。数式の検証ではA列のNo(実際には10ケタあります)に下線が引かれますが、数字が大きすぎるのでしょうか?

    No.4の回答に寄せられた補足コメントです。 補足日時:2022/11/28 20:20
  • ありがとうございます。IF関数と組み合わせると、+、-の表示は出るのですが、上記で補足しましたように「90日以内で最新の処置日に+」とはなりませんでした。またご助言いただけましたら幸いです。

    No.3の回答に寄せられた補足コメントです。 補足日時:2022/11/28 20:24
  • 早々の回答をいただいた後、返信遅くなってしまい申し訳ありません。上記で補足しましたように「90日以内で最新の処置日を+」とはなりませんでした。また、ご助言いただけたら幸いです。

    No.2の回答に寄せられた補足コメントです。 補足日時:2022/11/28 20:37

A 回答 (5件)

No.4です。



ご質問者は当初
>同じNoで、最も早い処置日から90日間処置日が記録されなければ、
>最も早>い処置日に「+」を表示し、それ以外は「-」を表示したい
と仰っていました。

しかし、補足説明で、
>3行目の352(処置日2021/12/4)は、その後7行目の同Noで
>2022/2/1と90日以内の処置がありますので”-”となります。
>7行目はその後90日以内の処置が無いので”+”となります。
と仰っており、当初の説明と矛盾しています。

①No.352 2021/12/04 -
②No.352 2022/02/01 +

つまり、上記の①②のデータがあったとき、ご質問者の補足説明では上記のように表示することになりますが、この例で、同じNo.352の最も早い処置日は①の2021/12/04です。ですから当初説明に従えば②は「それ以外」に該当し、「-」が表示されることになってしまいます。

補足説明がご質問者の真意だとすると、当初の条件で回答しようとした皆さんの回答がご質問者の希望に沿わない結果になるのは、ある意味当たり前です。

前置きはさておき、補足説明のように条件を変更すると「+または-を表示すべき対象日以降、90日以内に同じ番号の処置がなければ+それ以外は-を表示する」

ということになり、「最も早い処置日」は関係ないことになります。
そういった条件で数式を考えると、添付画像のようにC2に

=IF(SUMPRODUCT(($A$2:$A$100=A2)*($B$2:$B$100<=B2+90)*($B$2:$B$100>B2))=0,"+","-")

という数式を記述し、下方向へコピーすればよいことになります。
なお、数式はデータの範囲を100行目までとしたものですので、実際のデータ範囲にあわせて数式の範囲を調整してください。

また、私の前回回答の数式を適用したところ「#VALUE!」が表示されてしまうとのとこですが、前回の添付画像で明らかなように、当方ではエラーにはなりません。エラーになるのは
(1)データに不適切なものがある
(2)数式に問題がある
のどちらかです。

ご質問者は(1)を疑って、A列のNo.に10桁のものがあり「大きすぎるのでは」とお考えになったようですが、私の見解は(2)です。
数式の範囲に「見出し行」を含めているのではないですか?
見出し行はデータではないので、前回の数式は、これを含めた範囲で数式を作成すると「#VALUE!」が表示されてしまいます。
但し、今回の数式は見出しを含めた範囲を指定しても「#VALUE!」になりません。
「EXCELで次の数式を教えてください。」の回答画像5
    • good
    • 0
この回答へのお礼

先週一週間、PC作業が出来ず、返信が遅れてしまい大変失礼いたしました。
教えていただきました数式でうまくいきそうです。お忙しいと思いますが、わざわざご教授いただき、大変ありがとうございました。

お礼日時:2022/12/05 15:26

ご質問者の説明では不明な点が2つあります。



(1)同じNoで同日複数回処置することはないのでしょうか?
(2)もし、(1)があるとすると最も早い処置日が2つあるとき、その時点で最初の処置日から90日間の処置ありと考えるのでしょうか?

添付画像をご覧ください。

画像①ではNo952が2022/5/20の処置日のものが2つあり、2022/10/1が1つあります。
このようなケースでは2022/5/20に「+」がつくのかつかないのかというのが上記質問の意味です。
そもそも、このようなケースは発生し得ないか、最初の処置日から90日間に2回の処置があるので「+」をつけないのであれば、画像①のC2セルの数式

=IF(SUMPRODUCT(($A$2:$A$100=A2)*($B$2:$B$100-90<B2))=1,"+","-")

という数式を記述し、下方向へコピーすればよいと思います。

そうではなく、前述のケースでNo.952の2022/5/20の双方に「+」をつける場合は画像②のD2セルのように、

=IF(SUMPRODUCT(($A$2:$A$100=A2)*($B$2:$B$100<>B2)*($B$2:$B$100-90<B2))=0,"+","-")

という数式を記述し、下方向へコピーすればよいと思います。

※上記の2つの数式はデータの範囲を100行目までとしたものですので、実際のデータ範囲にあわせて数式の範囲を調整してください。
「EXCELで次の数式を教えてください。」の回答画像4
この回答への補足あり
    • good
    • 0

以下を満たすなら C2 は「+」


{=SUM((A:A=A2)*(B:B<B2+90))=1}

参考) 配列数式
https://support.microsoft.com/ja-jp/office/%E9%8 …
この回答への補足あり
    • good
    • 0
この回答へのお礼

お忙しいところアドバイスいただきありがとうございました。ご返事遅れて大変失礼いたしました。

お礼日時:2022/12/05 15:30

添付図ならびに説明文では、表示条件が十分理解できかねますが、



№が複数存在し、1番古い処置日から90日以降に2番目の処置日が存在する場合は +表示し、それ以外の同じ処置日は - 表示という数式になります。
№が複数存在しない場合はブランク表示です。
理解が異なる場合は、完成形の添付図の提示をしてください。

C2=iferror(if(or(countif(A:A,A2)=1,B2=""),"",if(and(small(transpose(filter(B:B,A:A=A2)),1)=B2, small(transpose(filter(B:B,A:A=A2)),1)+90<small(transpose(filter(B:B,A:A=A2)),2)),"+","-")))

下へフィルコピー
「EXCELで次の数式を教えてください。」の回答画像2
この回答への補足あり
    • good
    • 0
この回答へのお礼

ご返信遅くなり大変失礼いたしました。アドバイスいただきありがとうございました。

お礼日時:2022/12/05 15:30

COUNTIF関数でカウントさせて、1以上のセルに対して一番小さい日付なら "+" を表示……のように処置すればOK。


結構面倒だよ。
上手くできなくても諦めず、よく考えてみましょう。
作業用の列を設けると楽かもしれません。

・・・

ここは「代わりに数式を作ってください」と作業依頼する場所ではなく、
自分で数機を作れるようになるためのアドバイスをもらう場所です。
作業依頼をしたいのであれば、有料サイトで依頼することを薦めます。
    • good
    • 0
この回答へのお礼

ありがとうございました!

お礼日時:2022/11/26 13:07

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