2021 年に診察を受けた患者でレポートをフィルタリングしようとしていますが、患者が以前の年にも診察を受けたことがある場合は、レポートから除外したいと思います。(つまり、患者が 2018 年と 2021 年に診察を受けた場合は、レポートから除外したくありません) また、別の列の数値が 10.0 以上になるようにしたいです。
列 B = サービス日 列 C = 患者名 列 F = 番号インジケータ
これをフィルタリングする、または =IF 式をフィルタリングする最適な方法は何ですか?
これはヘルスケアレポートなので、患者情報のためレポートの内容を伝えることはできません。
答え1
コメントで示唆されているように、これは次のような数式を使用してヘルパー列を通じて実行できます。
=AND(F2>=10,COUNTIFS(C:C,C2,B:B,"<"&DATE(2021,1,1))=0)
参照を調整しF2
、C2
数式を貼り付ける行と一致するようにしてください。その後、その列を上下にコピーすると、参照が自動的に更新されます。仕組みの要点は次のとおりです。
AND()
内部の条件がすべて真である必要があります。そうでない場合は false を返します。条件は 2 つあります。
F2>=10
簡単です。COUNTIFS()
複数の条件を満たすレコードの数をカウントします。範囲 + 条件のペアで、2 つあります。C:C,C2
この行の値(この行の患者名)と一致する列C全体の値のみをカウントします。B:B,"<"&DATE(2021,1,1)
2021-01-01 より前、つまり 2021 年より前の日付のみをカウントします。
関数COUNTIFS()
が 0 を返し (つまり、以前の年に患者が見つからなかった)、F の数値が 10 以上の場合、関数はAND()
true を返します。それ以外の場合は false を返します。
数式をテーブルの各行にコピー/貼り付けし、その列でフィルターします。必要なのは true が返されたものだけです。
答え2
以下の情報が役に立つかどうか確認してください。
=IF(D4>=10,IF(ISNA(VLOOKUP(C4,$C$10:$C$13,1,FALSE)),B4:D4,""),"")
結果テーブルが生成されたら、結果テーブルの値のみを新しいテーブルにコピーします。その後、これすべての空白行を削除します。