• 締切済み

マクロでテーブルの日時のオートフィルターの制御

テーブルには「1~6時」、「1日中」、「6~8時,21~22時」などいろいろな時間が書いてあるセルがあります。このテーブルにマクロを使って「1時」「2時」...「24時」などのボタンを24個作りオートフィルターの絞り込みをしようとしています。 このままでは使いづらいので検索列というものを作り、「1時,2時,3時,4時,5時,6時」、「1日中」、「6時,7時,8時,21時,22時」と入力しました。 とりあえず「1時」の絞り込みのマクロを作りました。 Option Explicit Sub One_Oclock() With ActiveSheet.ListObjects(1) .Range.AutoFilter .ListColumns("検索列").Index, _ "1時*", xlOr, "1日中" End With End Sub 1時はセルの頭にくるのでこれで11時や21時を除外することはできましたが逆に「1時」のみのセルは除外されてしまいました。 また2時の場合は「"*2時*"」、「"*2時"」「"2時*"」「"1日中"」となりやはりうまくいきません。どうすればいいですか。

みんなの回答

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.5

> 「2時」のみのセルが除外されてしまいます。 検索列のセルだと思いますから検索に都合のいいように「,2時」としておくといいと思います。

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.4

> 1時が含まれるセルは1時が先頭になるため、「1時,2時,...」のような場合に除外されてしまいます。 「1時,2時,3時,4時,5時,6時」というのはこれがセットでひとつのセルに入っているのでしたか 個別に入っていると思ってました。 "*,2時*" にしてみたらいかがでしょう。

terabayahi1988
質問者

お礼

1日中のセルを入力し直すとうまくいきました。ありがとうございました。

terabayahi1988
質問者

補足

試してみましたが、「2時」のみのセルが除外されてしまいます。

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.3

> 検索列というものを作り、「1時,2時,3時,4時,5時,6時」 でしたから、検索列でフィルターしていますので 「"2時*"」は「"2時"」でいいと思います。 同じように "1時*"も "1時"で

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.2

> 2時絞り込みでは12時や22時が含まれてしまうのですがどうすればいいですか? 「"*2時*"」、「"*2時"」 だと 「12時」や「22時」それに「まだ12時」とか「22時だよ」も含まれると思いますから 1時と同じように 「"2時*"」「"1日中"」 にして試してみてください。

terabayahi1988
質問者

補足

試してみましたが、「"2時*"」「"1日中"」にすると 1時が含まれるセルは1時が先頭になるため、「1時,2時,...」のような場合に除外されてしまいます。どうすればいいですか。

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

> 1時はセルの頭にくるのでこれで11時や21時を除外することはできましたが逆に「1時」のみのセルは除外されてしまいました。 コードをそのまま実行しましたができましたよ。 添付画像は実行した結果とその時に設定されていたオートフィルタの設定状態です。 「1」が半角とか全角とかないでしょうか。

terabayahi1988
質問者

補足

回答ありがとうございます。1時を同じ方法で試すと出来ていました。 2時絞り込みでは12時や22時が含まれてしまうのですがどうすればいいですか?