web-dev-qa-db-ja.com

複数の許容可能なデータの組み合わせで複数の列をフィルタリングするExcel Advanced

私はすべてのテキスト、すなわちポケモンの動きを含む関心のある4つの列を持つ大きなデータセットを持っています。 「移動1」から「移動4」までの列にはそれぞれ異なる移動が含まれており、各行の組み合わせは異なります。例えば。

"       A        |   B         |   C         |   D         |   E".
" 1    Pokemon   |   Move 1    |    Move 2   |   Move 3    |   Move 4".
" 2    Igglybuff |   Tackle    |   Tailwhip  |   Sing      |   Attract".
" 3    Wooper    |   Growl     |   Tackle    |   Rain Dance|   Dig".

〜1000個

私の問題はこれです:リストからの移動の特定の組み合わせを含む行(ポケモン)のこのデータセットをフィルター処理したいです。例えば。どのポケモンが「Growl」と「Tackle」の両方を持っているかを見つけたいです。これらの動きは、動き1から4のいずれかに現れる可能性があります(別名、動きの順序は重要ではありません)。同様の状況で、特定の順序が重要ではない3つまたは4つの動きの組み合わせを検索したり、動きの特定の組み合わせを所有する特定のポケモンを検索したりする場合があります。

COUNTIFなどの機能を使用せずに使用しようとしました。ヘルプ/アイデアは大歓迎です

8
Angel

Excelの高度なフィルタリングには、考慮できる多くのオプションがあります。

オプション1-高度なフィルター

高度なフィルターを使用すると、複数の条件(必要なもの)を照会することができます。また、各フィルターを使用して最終データセットを生成する回数だけ簡単に行うことができます。 Microsoft Excel 2010、ここでは2007とほぼ同じ の高度なフィルターセクションへのリンクを次に示します。基本的な数式を使用するだけでなく、外に移動したい場合は、開始するのに最適な場所です。

このルートを下る場合は、サイトの指示に従って手順を実行してください。

  • スプレッドシートの一番上の行に選択したさまざまな条件を挿入し、リスト範囲でそれらの行を指定します

    • 単一のワークシートにすべてのデータを保持する場所に基準範囲を設定します

    • フィルターを実行し、結果のデータを確認します。その削減されたデータセットのレコード数を簡単に数えることができます。

enter image description here

オプション2-ピボットテーブル

ここで見ることができる別のオプションは、ピボットテーブルを使用することです。 ピボットテーブルとピボットチャート は、まさにあなたが探しているものを正確に達成するために職場で毎日使用している驚異的なツールです。

オプション3-Visual Basicの使用

3番目のオプションとして、視覚的な基本コードを使用してソリューションを作成してみてください。これにより、各条件について調べる範囲を正確に指定できるため、完全に制御できます。残念ながら、このソリューションを使用するには、VBコードを理解する必要があります。これを支援する優れたオンラインリソースがいくつかあります。

6
Nathaniel Payne
_=COUNT(INDEX(MATCH(B2:E2, MoveList, 0), 0)) > 0
_

範囲B2:E2(ムーブ1から4)のいずれかの値がムーブリストで定義された範囲内にある場合、TRUEを返します。名前付き範囲を使用して、この式を1000行すべてに簡単にコピーできるようにします。

COUNT()値がゼロより大きいかどうかを確認する最後の部分を削除すると、次のようになります。

_=COUNT(INDEX(MATCH(B2:E2, MoveList, 0), 0))
_

ポケモンが持っているムーブの数を返します。これは、ムーブリストのムーブと一致します。

MATCH()は、ルックアップ値、ルックアップ範囲、およびマッチタイプの3つの引数を取ります。理由は完全にはわかりませんが、式のその部分をINDEX()でラップすると、最初の引数に配列を使用できるようになります。たぶん、ここの誰かがより良い説明を提供できるでしょう。

いずれにせよ、上記の式は問題を解決するように見えます。

enter image description here

最後に、上記のように紛らわしい式と名前付き範囲を使用する代わりに、いくつかの動きだけをチェックする場合、チェックしたい動きごとに列を作成することができます。 「グロールがいますか?」と「タックルがありますか?」。次に、=COUNTIF(B2:E2, "Tackle")=COUNTIF(B2:E2, "Growl")を使用します。次に、これらの列を合計する別の列を作成し、ゼロの値を除外して、タックルまたはグロウルを持つポケモンのみを表示できます。

これを達成する方法を調査するとき、私はこれらの2つのページを見ました。

  1. https://www.excelforum.com/Excel-general/786407-find-if-any-value-on-one-list-exists-on-another.html
  2. https://www.deskbright.com/Excel/using-index-match/
1
Tim