選択オートフィルタの改良と標準機能について~.textの列幅エラー対策~
2023年11月05日
最近、schooというオンライン学習サイトを利用している。
会社の教育の一環でやらされた感はあるが、
講師の中にエクセルで有名なoffice TANAKA が居るではないか!!!
ってことで色々エクセル関係の動画を見ているわけだけど、
知らないことが結構あってなかなか勉強になる。
特に衝撃だったのが、
選択セルでオートフィルタの絞り込みが標準機能にあったこと。。。
わざわざマクロまで作ったのに。
今回は、選択セルでオートフィルタを絞り込むやり方と、列幅が狭くて#####と表示されているセルのテキストを取得するマクロについて。
会社の教育の一環でやらされた感はあるが、
講師の中にエクセルで有名なoffice TANAKA が居るではないか!!!
ってことで色々エクセル関係の動画を見ているわけだけど、
知らないことが結構あってなかなか勉強になる。
特に衝撃だったのが、
選択セルでオートフィルタの絞り込みが標準機能にあったこと。。。
わざわざマクロまで作ったのに。
今回は、選択セルでオートフィルタを絞り込むやり方と、列幅が狭くて#####と表示されているセルのテキストを取得するマクロについて。
さっそく本題。
■選択セルでオートフィルタを絞り込むやり方
やり方は、右クリック > フィルター(E) > 選択したセルの値でフィルター(V)
自作のマクロだと、フィルタ条件として
selection.valueにするかselection.textが悩ましかった。
.textのほうが見た目通りのフィルタをしてくれる。
だけど、列幅が狭いと「#####」と表示されて、
その状態でフィルタをかけると、絞り込み条件が#####となってHITしない。
標準機能をマクロの記録をさせながら「#####」と表示される状態で試してみた。
ActiveSheet.range("$A$1:$H$1127").AutoFilter Field:=4, Criteria1:= "08/31 09:42"
上記が記録された内容。
どうやら、列幅によらず、表示形式に沿ったテキストでフィルタをしてくれるもよう。
この結果を受けて、.textで#####と表示された時の対策を思いついた!
絞り込み条件を「Format(Selection.Value, Selection.NumberFormatLocal)」にすればいいんだ。
ソースコードは、過去の記事を修正したのでそっちを参照。
「選択中のセルでオートフィルタ 他」
標準機能にショートカットキーを割り当てればいいじゃんという話ではあるけど、
自作マクロの利点もある!
●すでにフィルタ済みの場合はフィルタ解除する
●フィルタ範囲外の列で実行した場合に、フィルタ範囲を拡張する
PR
Comment