• 締切済み

excel 2003 オートフィルタ!

excel 2003で、オートフィルタがうまくいきません。 A列の2行目から、1~5までの数字がランダムに並んでいるとします。 A1セルをオートフィルタし、 条件を、オプション>3を含む で指定すると、3がフィルタされてほしいのですが 1つも抽出されません。 3で始まるもだめでした・・ フィルタで抽出するマクロをくんでいて 列は、20列以上あり、 列によって、文字や数値があります。 フォームで列を選び、検索文字を入力して Criteria1:="=*" & 検索文字 & "*", Operator:=xlAnd と言う感じでフィルタしています。 文字はできますが、数値ができないのは、なぜでしょうか・・・

みんなの回答

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

こんにちは。 出来ないのはなぜかと聞かれても「仕様」という回答しか厳密にはありません。もともと、ワークシートのセルの数字は、Vairant/Double型で、一定の方向付けをすると、数値に変わる仕組み(型キャスト)で、オートフィルタに、そうした仕組みが組み込まれているわけです。ただ、それは、Version が上がるごとに確立していったことで、元から完全にできていなかったようです。これは、私の知っている範囲ですが、ある有名な方のマクロの難問集(マクロで解決出来ない問題)に出ていました。こういうレベルの問題ではなくて、もう少し仕様に関わる問題ですが。 ところで、マクロということですと、簡単に、フィルターオプションでできると思います。回答の「なぜ」というご質問からは外れます。 入力を、イベント・ドリブン型でもよいと思いますが、フォーム?をお使いのことで、マクロ形式にしてあります。これは、例ですから、A列のみの設定になっています。 '------------------------------------------- Sub FilterOptionMacro()   Dim sSrch As Variant   Dim rngCrt As Range   Set rngCrt = Range("AA1:AA2")      sSrch = Application.InputBox("検索式を入れてください。", Type:=2)   If VarType(sSrch) = vbBoolean Or sSrch = "" Then Exit Sub   '含む(*)   rngCrt.Cells(2).FormulaLocal = "=ISNUMBER(SEARCH(""*" & sSrch & "*"", A2))"   With Range("A1", Cells(Rows.Count, 1).End(xlUp))     If .Count > 2 Then       If ActiveSheet.FilterMode Then         ActiveSheet.ShowAllData       End If       .AdvancedFilter _       Action:=xlFilterInPlace, _       CriteriaRange:=rngCrt, Unique:=False     End If   End With   rngCrt.ClearContents End Sub

  • akiomyau
  • ベストアンサー率43% (555/1280)
回答No.1

オートフィルタの含むは文字列にしか対応しないのが仕様です。 今回の例であれば 3に等しいを選ぶ形になります。 オートフィルタの検索については この辺のサイトを参照してはどうでしょうか。 複雑な検索条件を使用してリストデータを抽出する方法 http://support.microsoft.com/kb/402757/ja

mimomosan
質問者

お礼

なるほど。 早急なお返事、ありがとうございます。

関連するQ&A