• ベストアンサー

Excel オートフィルタ オプション機能について

オートフィルタで金額を抽出したいです。 オプション機能からand条件で2つの条件を設定します。 ¥100,000円 以上 \180,000以下 という設定の場合です。 その際、プルダウンに表示される金額には「¥」がついています。 しかし、¥マークつき(リスト内で「¥」マークが設定されています)で ソートしようとすると、設定金額が合っているのにソートされません。 「¥」マークなしで数値を手入力すれば結果は出ます。 結果からすると「¥」をつけてはいけないとなるのですが その時「¥」マークは何を意味するのでしょうか。 何故つけてはいけないのでしょうか。 お分かりになる方、ご教授のほど よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • te12889
  • ベストアンサー率36% (715/1959)
回答No.1

その列のセルをひとつ選択したとき、数式バーの表示はどうなっていますか? 「\」記号のない数値のみになっていると推測します。 推測どおりとすれば、「セルの書式設定」で「通貨」&「\記号あり」になっているのでしょう、きっと。 この場合、\記号はセルの表示上追加されるだけで、セル内の値は数値のみなので、ソートキー等に「\」を付けると「文字列」になってしまうため、ソートにならないのでしょう、きっと・・・。

ssgc
質問者

お礼

ご回答、ありがとうございました。 >ソートキー等に「\」を付けると「文字列」になってしまうため、ソ>ートにならないのでしょう、きっと・・・。 なるほど!でした。 理解しました。 ありがとうございました。

その他の回答 (3)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 ワークシートから、コマンドのオートフィルタで、ドロップダウンボタンのオプションを出し、選択するときに、内部では、検索値が自動的に変換されます。ためしに、「\1000」でも、「1000」でも、「1,000」でも同じようになります。それは、数値だからです。 次に、データ側には、こんな実験が出来ると思います。 ------------------------ 画面 ----------------------- A列   B列       C列 数字   書式文字    関数文字化 \2    2        \2 \3    3        \3 \4    4        \4 \5    5        \5 \6    6        6 \7    7        \7 \8    8        \8 \9    9        \9 \11    11      \11 \1,000  1000    \1,000 ---------------------------------- ワークシート上の表示設定 ---------------------------------- B列は、書式で文字列 (¥マークは付けられません) C列は、テキスト関数 =TEXT(A2,"\#,##0") ただし、6行目だけ =TEXT(A6,"#,##0") ------------------------------- 内部(実際は、数字レベルと文字レベルは、同じところにある) ------------------------------- 表示レベルの部分が、オートフィルタのドロップダウンリストにも反映する。 A列の場合 (書式) 数字レベル  1000    ←ここで検索される 書式レベル  \#,##0 表示レベル  \1,000 文字レベル  ------ (入っていない) B列の場合 (書式文字列) 数字レベル  1000    ←ここで検索される 書式レベル  文字列(@) 表示レベル  1000 文字レベル  ----- (入っていない) C列の場合(関数文字列化) 数字レベル  ----- (入っていない) 書式レベル  \#,##0 表示レベル  \1,000  文字レベル  \1,000   ←ここのレベルで検索された --------------------------------- このように変わります。 C列は、当然、[\] で区分けできます。 しかし、書式レベルでは、並べ替えや検索は不可能です。 ただし、臨時で、表示レベルを文字化することは可能です。 Alt + F11 -挿入-標準モジュールで、 Function NUM2TEXT(rng As Range) As String    Application.Volatile    NUM2TEXT = rng.Text End Function として、ワークシートのD列に、 (D2) =NUM2TEXT(A2) と貼り付けて、フィル・ダウンコピーすれば、文字化されます。 そうすると、「\」の含むものと含まないものが区分けできます。

ssgc
質問者

お礼

ご回答、ありがとうございました。 関数が苦手なのでなんとなく理解しました。 じっくり理解していきます。

回答No.3

数値を入力→書式設定で通貨にした状態ですと、数式バーには 数値のみ表示されますが、オートフィルタのリストには\マーク付きで 表示されるのが仕様の様です。 抽出条件にオプションを使わなければ、正しく抽出されるようですが オートフィルタのオプション機能を使用すると、何故かExcel内では \付きの文字列として扱っているみたいですね。 質問者さんが仰るとおり\マークがついている時は、オートフィルタで 表示されるリストでは条件検索が出来ないため、オートフィルタの抽出を 行う前に、一時的にセルの書式設定を標準か数値にするしか エラー回避方法は無いかと思います。 回答になってなくてすみません。

ssgc
質問者

お礼

ご回答、ありがとうございました。 >オートフィルタのリストには\マーク付きで >表示されるのが仕様の様です。 仕様なのですね。 理解しました。 ありがとうございました。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

\マークは通貨記号です セルに100,000と入力してセルの書式を「通貨」にすると自動で頭に「\」がつきます。このとき数式バーには「\」は表示されず100000という数字だけが表示されます。 ところが「\100,000」を文字列で入力してしまうと見かけ上は全く同じですが、並び替えしたときに期待するとおりになりません。 文字列は先頭から順番に大小比較をするために \12,000 > \100,000 となってしまうのです。(先頭から三桁目が左辺のほうが大きいから) もし文字列として入力されてしまった「数値」を本当の数値にしたいなら、任意のセルに数字の1を入力しコピー→数値にしたいセルを選択→「編集」→「形式を選択して貼り付け」→「乗算」→「OK」とすれば数値になるはずです。 今後は「\」記号は自分で入力するのではなく、セルの書式で「通貨」を選んで表示させるようにすれば良いでしょう

ssgc
質問者

お礼

ご回答、ありがとうございました。 「¥」がつくことで文字列になる、なるほど!です。 >文字列は先頭から順番に大小比較をするために >\12,000 > \100,000 >となってしまうのです。(先頭から三桁目が左辺のほうが大きいか ら) こちらの回答もとてもわかりやすかったです。 ありがとうございました。

関連するQ&A