機能する例

機能する例

tl;dr 一意の値が 1 つだけある列のフィルターを Excel で強制的にロックするにはどうすればよいでしょうか。

この問題に適切な「ラベル」を思いつくのに非常に苦労しているので、例を挙げて説明するのが最善だと考えています。これらの例では、列 1 がリスト名を表し、列 2 が各リスト内の値を表す Excel シートを使用しています。

機能する例

まず、列 2 でフィルターして、「Royalties」を検索します。

列 2 にロイヤリティ フィルターのみを適用した画像

ここで、列 1 の複数のリストが一致していることがわかります。そのうちの 1 つだけに興味があるので、列 1 にフィルターを適用します。

両方の列に適用されたフィルターを示す画像

最後に、リスト内のすべての値を表示したいので、列 2 からフィルターを削除します。

列 2 のフィルターが削除された画像

イライラする例

したがって、列 2 のフィルターの結果が列 1 に 1 つのリスト名のみになる場合を除いて、同じことを行いたいと思います。

上記のステップ1を繰り返しますが、列2を「家賃またはロイヤリティ」でフィルタリングします。

列 2 のフィルターにより列 1 に 1 つの結果が返されることを示す画像

現在、列 1 には結果が 1 つしかありません。必要ない場合でも、列 1 にフィルターを「ロック」したいのです。その理由は、列 2 からフィルターを削除して、そのリストに含まれるすべての値を表示したいからです。

しかし、それを実行する方法が見つかりません。フィルターをロックする代わりに、Excel は列 1 にフィルターを適用しません。その後、列 2 からフィルターを削除すると、両方の列のすべての値が表示されます。

質問

現在の回避策は、列 1 の値をコピーしてメモ帳に貼り付けることです (フィルター アクションによってコピーされた値が消去されるため、メモリに保持することはできません)。次に、列 2 のフィルターを削除し、列 1 に「等しい」フィルターを適用します。ただし、これを行うより良い方法があるかどうか疑問に思っています。

一般的な解決策を希望していることにご注意ください。スプレッドシートは変更されるため、汎用的でない限り、マクロ/VBScript は使用しません。

この長い投稿を読んでいただきありがとうございます。

よろしく、サチン。

答え1

順序を逆にすれば、メモ帳にコピーする手順を省くことができます。まず列 1 の値をコピーし、次に列 1 に「テキスト フィルター > 等しい...」フィルターを適用して、コピーした値を貼り付けます。これで、列 2 のフィルターをクリアできます。

関連情報