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

C列に製品番号が入力されています。
M列に依頼日が入力されています。

新たにC列に製品番号を入力した時(またはM列に今日の日付を入力した時)に
過去30日以内に同じ製品番号を依頼していた場合、
新たに入力したC列の該当セルに色を付けたいですが
可能でしょうか?

出来れば関数でお願いします。
無理ならマクロをご指南ください。
宜しくお願いいたします。

A 回答 (2件)

こんにちは



行番号の提示がないので、適当になってしまいますけれど、C列、M列には1行目からデータが並んでいるものと仮定しました。
自分より上の行を探して「C列の値が同じで、M列が30日前より後」のデータが存在するかどうかを調べればよさそうですね。

>過去30日以内に同じ製品番号を依頼していた場合、~~
行番号の順に入力をしてゆくものと解釈しましたので、「自分より上の行」としています。
順不同で入力されるのであれば、列全体を検索対象にすれば良いですが、その場合は入力順序は無視されることになります。


色を付けるのであれば、条件付き書式を利用して、「数式を使用して~」の設定方法で、
例えば、設定対象セルが1行目であれば、
 =SUMPRODUCT((C$1:C1=C1)*(M$1:M1>M1-31)*(M$1:M1<>""))>1
のような式を入力して、書式を設定しておけば良いと思われます。

※ M列の日付は全てシリアル値(=エクセルの日付型の値)と仮定しています。
※ 上の式は「30日前は該当する」と判断するようになっています。
 30日前を含まない場合は-31の部分を-30にすれば良いでしょう。
※ 最初に説明したように、行番号順に入力したものと見做していますので、仮に、下の方の行に古い日付のデータを入力をした場合、(既入力の)日付が新しいデータではなく、入力した日付の古いデータの方が着色されます。
※ 日付の判断としては「30日前より後」の片方だけの判断にしてあります。
 もしも上記のように「自分の日付まで」の判断も必要な場合には、同様にして付け加えれば良いです。
    • good
    • 0
この回答へのお礼

早々なご対応ありがとうございました。
実装しましたら、無事、色付けも出来ました。
問題なさそうなので、取り入れてみたいと思います。

お礼日時:2023/03/04 17:07

面白そうなんで作ってみた。

(とても珍しい事)
とりあえず、2行目からデータが並んでいると推定してます。

 =COUNTIFS(OFFSET($C2,-1,0,-1*ROWS(INDIRECT("A2:"&ADDRESS(ROW(),COLUMN()))),1),$C2,OFFSET($M2,-1,0,-1*(ROWS(INDIRECT("A1:"&ADDRESS(ROW(),COLUMN())))-1),1),$M2)

これをC2セルやM2セルに対する条件付き書式の条件として設定すればいい。

やってることはCOUNTIFS関数で該当するセルの値に重複してる数を数えているだけ。
工夫としては上に検索するので、OFFSET関数で検索範囲を指定するくらいですね。OFFSET関数内でどうやって範囲を指定しているかは自身で解析してください。他でもけっこう使えるテクニックを詰め込んでますのでどこかで役に立つかもしれません。
(指定しているのは「C2セル」「M2セル」だけです。「A1」「A2セル」の記述もありますがダミーのパラメータとして使っているので気にしちゃダメ.
「A2セル」の指定は、本来なら「A1セル」を指定して「1」を引くなんてことをやるのでその簡略化のためです……M列側のほうでやってる)

基本を押さえていれば、あとは応用です。
    • good
    • 0
この回答へのお礼

なんか私には複雑で理解に時間を要しそうです。
これはこれで、興味があります。
ありがとうございました。

お礼日時:2023/03/04 17:05

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