- 締切済み
excel 2003 オートフィルタ!
excel 2003で、オートフィルタがうまくいきません。 A列の2行目から、1~5までの数字がランダムに並んでいるとします。 A1セルをオートフィルタし、 条件を、オプション>3を含む で指定すると、3がフィルタされてほしいのですが 1つも抽出されません。 3で始まるもだめでした・・ フィルタで抽出するマクロをくんでいて 列は、20列以上あり、 列によって、文字や数値があります。 フォームで列を選び、検索文字を入力して Criteria1:="=*" & 検索文字 & "*", Operator:=xlAnd と言う感じでフィルタしています。 文字はできますが、数値ができないのは、なぜでしょうか・・・
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 出来ないのはなぜかと聞かれても「仕様」という回答しか厳密にはありません。もともと、ワークシートのセルの数字は、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)
オートフィルタの含むは文字列にしか対応しないのが仕様です。 今回の例であれば 3に等しいを選ぶ形になります。 オートフィルタの検索については この辺のサイトを参照してはどうでしょうか。 複雑な検索条件を使用してリストデータを抽出する方法 http://support.microsoft.com/kb/402757/ja
お礼
なるほど。 早急なお返事、ありがとうございます。