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

同じ品番で、マスタの番号が変わるデータが、毎日更新されているとします。
品番で最新日付のマスタがわかるように〇印をつけたいです。(画像参照)

配列関数で
{=IF(MAX(IF(B3=$B$3:$B$14,$C$3:$C$14))=C3,"〇","")}
で成功したような気がしますが、誤ってセルをクリックしたりする事もあり
配列以外で簡単な方法はありませんでしょうか?
どなたか詳しいかたアドバイスいただけると嬉しいです。

◆データはどんどん増えていきます。
◆日付はどんどん下にいくにつれて新しくなります。
◆並び替えはしたくありません
◆エクセルは2016ですがtextjoinなど使えないです。

「同じ品番のマスタで最新日付のものに〇印を」の質問画像

A 回答 (3件)

こんばんは



>配列以外で簡単な方法はありませんでしょうか?
確かに、配列数式はご指摘のような扱いにくさはありますよね。
数式を入れた列を誤って変換するようなことを防止したければ、「シートの保護」を利用する方法も考えられると思います。


ご質問の内容を通常の関数式で行うことを考えてみると・・
ご提示のセル位置が不明ですが、式の内容から「品番」とあるセルがB2セルであるものと仮定しました。
(ご提示の式を入力しているのがD3セルと解釈しました)
ご提示の式と同等で良ければ、
 =IF(COUNTIFS(B:B,B3,C:C,">"&C3),"","〇")
をD3セルに入力すれば同様の結果になるものと思います。
※ 同じ品番で同じ日付の最新データが複数存在する場合、全部に〇が付きます。

ただし、ご提示の式だとあらかじめデータが入力されていない行までに式をフィルコピーしてしまうと、データのない行には〇が表示されてしまいます。
それを避けたい場合には、D3セルに
 =IF(COUNTIFS(B:B,B3,C:C,">"&C3)+(C3=0),"","〇")
としておくことで、下方にあらかじめフィルコピーしておくことも可能になると思います。
※ 例示の式では配列計算の範囲を全行にしてありますので、計算負荷がかかります。
 負荷を減らしたい場合には、指定セル範囲を、使用する可能性のある範囲に狭めておくことで減らすことができます。
    • good
    • 1
この回答へのお礼

ありがとう

ありがとうございます!!お二方とも親切に教えてくださりとても選べないので初めに回答くださって嬉しかったのでベストアンサーとさせて頂きます。

お礼日時:2023/04/03 09:58

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


表はテーブルとして作成しています。各項目のセル位置が不明なのでfujillinさんの回答とセル位置を合わせています。
ただし、ご質問者の掲示された表と一箇所だけ異なる部分があります。
13行目に品番eのデータがありますが、この日付がご質問者の掲示されたものは2023/3/4ですが、こちらの表は2023/3/3としています。
E3にfujillinさんの回答の数式を記述してみました。
fujillinさんの回答において、
>同じ品番で同じ日付の最新データが複数存在する場合、全部に○が付きます。
という注釈がついていますが、11行目と13行目を同じ日付にしたため、確かに品番eについては11行目と13行目の両方に○が表示されます。
fujillinさんの回答と同じ結果となる別の数式

=REPT("○",SUMPRODUCT((B:B=B3)*(C:C>C3)+(C3=0))=0)

という数式をF3に記述しています。
こちらも、11行目と13行目の両方に○が表示されます。

C列の日付が上から順に登録されていくとして、同じ日付でも後から登録されたもの(つまり行番号の大きい方)を最新データとする方法もあります。G3セルに

=REPT("○",ROW()=LOOKUP(1,0/(B:B=B3),ROW(B:B)))

という数式を記述しています。こちらの数式は、同じ日付でも後から登録されたものにのみ「○」が表示されます。
但し、前述のとおり「日付が上から順に登録されていく」ことが前提であり、日付の逆転が発生する場合は正しい結果になりません。
その場合は、とても長い数式になってしまいますし、fujillinさんの回答でも指摘されていますが、
>配列計算の範囲を全行にしてありますので、計算負荷がかかります。
という問題もあるので、範囲を300行までにした数式をお示しすると、

=REPT("○",ROW()=AGGREGATE(14,6,ROW(A$3:A$300)*(B$3:B$300<>"")*(B$3:B$300=B3)*(C$3:C$300=LARGE((B$3:B$300=B3)*(C$3:C$300),1)),1))

という数式を記述することになります。
「同じ品番のマスタで最新日付のものに〇印を」の回答画像3
    • good
    • 2
この回答へのお礼

ありがとう

rept関数、全然勉強できておりませんでした。細かい解説と方法示してくださりありがとうございます。感謝です!!

お礼日時:2023/04/03 09:56

No1です。



連投失礼。

No1の回答文中「D3セル」とあるのは「E3セル」の誤りです。
読み替えてください。
    • good
    • 1

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