Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Microsoft 365)
文字列の数字を〇〇以外条件でフィルタできない
投稿日時: 22/11/12 10:07:29
投稿者: puyo

お世話になります。
 
文字列の数字を〇〇以外という条件でフィルタしたいのですが、うまくいきません。
 
 A列
 No.
 1
 2
 3
 
上記のようなデータがあり、1,2,3が文字列である場合、
Range("A1:A4").AutoFilter 1 , "<>1" を実行すると
すべて出て2,3だけを表示することができません。
 
何か良い方法はありますでしょうか。

回答
投稿日時: 22/11/12 16:33:31
投稿者: 半平太

>何か良い方法はありますでしょうか。
 
 最終的な目的に照らしても、オートフィルタしかダメなんでしょうか?
 
「データ」の詳細設定を利用してフィルタを掛けたらどうかなぁ、なんて思うのですが・・

回答
投稿日時: 22/11/12 16:40:42
投稿者: WinArrow
投稿者のウェブサイトに移動

手操作でもダメですね・・・・
 
苦肉の策・・・・一時的に数値化、フィルタ後に文字列に戻す案

Dim MOJI
    
    MOJI = 1
    With Range("A1").CurrentRegion
        .Columns(1).NumberFormatLocal = "G/標準"
        With .Columns(1)
            .Value = .Value
        End With
        .AutoFilter Field:=1, Criteria1:="<>" & MOJI, Operator:=xlFilterValues
        .Columns(1).NumberFormatLocal = "@"
    End With

投稿日時: 22/11/12 16:54:52
投稿者: puyo

半平太さん
 
回答ありがとうございます。
 
仰る通り、「データ」の詳細設定を利用してフィルタを掛けましたが、だめでした。
実行した結果、1,2,3すべてが表示されます。
 
 A列 B列
 No. <>1
 1
 2
 3
 
 Range("A1:A4").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("B1:B2")

投稿日時: 22/11/12 17:06:33
投稿者: puyo

WinArrowさん
 
回答ありがとうございます。
 
やはりフィルターという手段を用いる場合、一旦数値に直すのが簡単かもしれませんね。
今後の選択肢の一つにさせて頂きます。
 
サンプルコードありがとうございます!
本件とずれますが、
 
        With .Columns(1)
            .Value = .Value
        End With
 
の部分すごくいいですね。勉強になりました。