高度なフィルターを使用して膨大な量のデータをフィルターしようとしたときに、説明できない問題が発生しました...
数十万行 (.xlsb) のドキュメントがあり、そこにはさまざまな属性を持つ多数の製品が含まれています。1 つのアイテム、1 つの行、列内の属性。私がやりたかったのは、列の 1 つに Y があるアイテム (もう 1 つのオプションは N) と、いくつかのブランドのいずれかであるアイテム (別の列) をフィルター (リストから削除) することでした。そして特定のカテゴリ(さらに別の列)にも存在します。言い換えると、列VにYがあるもの、および列CにAAAがあるものをすべて削除したいということです。そして列Dに1A2B。
まず、Y フィルターを作成しました。上部の列に ="=N" と入力してテストしたところ、うまくいきました。その列の Y を含むものはすべて削除されましたが、これまでのところ順調です。
次に、ブランド (AAA) を 1 つだけ独自の列に追加し、<>1A2B を別の列に入れて、フィルターを再度実行しました。最初に最初の行 (Y) をフィルターし、次に残りの項目から、指定されたブランド (AAA) と指定されたカテゴリ (1A2B) の項目をフィルターする代わりに、2 番目の行は完全に無視されました。何も変わりませんでした。
念のため、列 V に ="=N" を追加してみましたが、何も変わりませんでした。
カテゴリ フィルター自体は期待どおりに動作します。Y/N フィルターも、それ自体は問題なく動作します。しかし、何らかの理由で組み合わせると、より広いフィルターのみが実行されます。何かアイデアはありますか?
最終的に動作させる方法は、列 V に ="=N" を指定して、考えられるすべてのブランド (AAA、AAB、AAC など) を個別にリストすることでした。この方法では、N が含まれるすべてのブランドを個別に「許可」していましたが、これは理想的な解決策からは程遠いものです。行に ="=N" だけを指定すれば同じ結果が得られるだろうと期待していましたが、どうやらそうではないようです。
答え1
非常に複雑なフィルターを使用してこれを行うよりも、別の列を自由に追加できると仮定して、true または false (または Y/N など任意の設定) に相当する数式を含む列を作成する方がはるかに優れています。その後、その列にのみフィルターを非常に簡単に適用できます。
答え2
高度なフィルターで何をしようとしているのかがわかったと思います。
各行は他の行と OR 関係にあるため、条件には 1 行を使用する必要があります。つまり、高度なフィルターを実行すると、条件行のいずれかの条件に一致する行が取得されます。「NOT AND」などの従属条件が必要な場合は、その条件を新しい列に配置し、数式で最初のデータ行を参照する必要があります。
次のモックアップでは、列 B に「N」があり、列 C に「AAA」がある場合は、列 D に「1A2B」がない場合にのみそれが必要です。そのため、列 E に、次の新しい数式を入力します。=NOT(AND(C5="AAA",D5="1A2B"))
これを実行して高度なフィルターを実行すると、Beta = Y の行 5 ~ 7 がフィルターされ、9 と 13 もフィルターされます。
|A |B |C |D |E
--+------+------+------+------+-------
1|Alpha |Beta |Gamma |Delta |Epsilon
2| |N | | |FALSE
3| | | | |
4|Alpha |Beta |Gamma |Delta |
5|Andy |Y |AAA |1A2B |
6|Bob |Y |BBB |1A2B |
7|Chad |Y |AAA |ZZ00 |
8|Duke |N |BBB |ZZ00 |
9|Ed |N |AAA |1A2B |
10|Frank |N |BBB |1A2B |
11|Gus |N |AAA |ZZ00 |
12|Herb |N |BBB |ZZ00 |
13|Indy |N |AAA |1A2B |
14|John |N |BBB |1A2B |
15|Kirk |N |AAA |ZZ00 |
16|Luke |N |BBB |ZZ00 |
<>AAA
他のオプションとしては、基準を 3 行 ( & <>1A2B
、AAA
& <>1A2B
、<>AAA
& )にすることです1A2B
が、これは拡張性が非常に低く、扱いにくくなります。