忍者ブログ

選択オートフィルタの改良と標準機能について~.textの列幅エラー対策~

2023年11月05日
最近、schooというオンライン学習サイトを利用している。

会社の教育の一環でやらされた感はあるが、
講師の中にエクセルで有名な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
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字