• ベストアンサー

マクロとオートフィル

オートフィルを使った「マクロの記録」の部分でつまずいてしまいました。 A列に名前、B列に数字が入っていて、2列にオートフィルタをかけている場合 B列の0の数字のみを非表示にしたかったので オートフィルのタブを使って「0」のチェックマークを外すという動作を「マクロの記録」で記録しました。 そこまではいいのですが、データの追加があったのでオートフィルタの範囲内に数字と名前をそれぞれの列に追加したあと上記のマクロを使ってみると、どうしても追加したデータと0が非表示になってしまいます。 これを避けるにはVBAで指示しないと行けないのでしょうか?

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

マクロの記録を利用してご希望の操作をする場合は、いくつかのノウハウがあります。 まず最初にオートフィルタのデータ範囲を指定するとき、リスト上にカーソルを移動し、Ctrl+Shift+*のショートカット操作を行います(これでデータ数が増えた場合もフィルタ対象になります)。 この後、フィルタの操作を行いますが、0以外の数値を指定するとき「0」のチェックを外すのではなく(この場合は0以外の登録されたデータを抽出する操作になります)、フィルタの「数値フィルタ」を利用し「指定の値に等しくない」を選択して「0」を指定します。 最後にフィルタを解除して終了です。 この2つの操作で記録すればご希望のフィルタ操作になっていると思います。

nakayosi
質問者

お礼

ありがとうございます ミソは数値フィルタですね 勉強になりました!

その他の回答 (2)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! >B列の0の数字のみを非表示にしたかったので というコトは B列の「0」以外でフィルタを掛けたい訳ですよね? マクロの記録ではないのですが、単純に Sub Sample1() Range("A1").AutoFilter field:=2, Criteria1:="<>0" End Sub としてみてはどうでしょうか?m(_ _)m

nakayosi
質問者

お礼

ありがとうございます 参考にさせていただきました!

回答No.1

・・・ん? 0のみを非表示にしたいのなら、その動作であっているのではないのでしょうか? 追加したデータをどう表示させたいのかが問題ですね。 0のみを非表示にする前に、色々オートフィルタいじっているのでしたら、 0のみを非表示にする部分のみをマクロ化すればいいのではないでしょうか。 上手く文章にできず申し訳ないのですが…以上、参考まで

nakayosi
質問者

補足

自分もそう思ったのですが いま確認した所 下記のような命令になっていました。 多分、0を非表示にする じゃなくて 今ある数字を表示する?みたいになってるのかも知れません ' ActiveSheet.Range("$B$2:$BI$212").AutoFilter Field:=53, Criteria1:=Array( _ "10,500", "105,000", "108,402", "12,600", "12,642", "126,147", "130,600", "130,620", _ "14,973", "142,232", "16,628", "170,625", "170,789", "18,900", "196,000", "2,122,260", _ "2,310", "21,000", "22,050", "22,905", "23,223", "24,097", "27,400", "28,760", "3,780", _ "31,500", "32,000", "370,000", "4,200", "4,388,612", "40,950", "42,000", "425,250", _ "43,890", "456,750", "5,880", "6,053", "6,190", "6,684,726", "6,825", "61,913", _ "62,556", "65,645", "66,415", "693,525", "74,438", "787,036", "8,084", "8,440", _ "87,200", "9,820,209", "901,320"), Operator:=xlFilterValues End Sub

関連するQ&A