• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルで縦方向のオートフィルタはできないので、)

エクセルで縦方向のオートフィルタの設定方法

このQ&Aのポイント
  • エクセルで縦方向のオートフィルタはできないため、マクロを使用して列の表示・非表示を切り替える方法があります。
  • 具体的には、指定した範囲のセルに0を入力すると、該当する列を非表示にすることができます。
  • しかし、横長の表の場合、条件を指定するセルや非表示にする列が増えるため、マクロが長くなってしまうことがあります。

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

  • ベストアンサー
  • mar00
  • ベストアンサー率36% (158/430)
回答No.3

Sub Macro1() For i = 5 To Cells(4, Columns.Count).End(xlToLeft).Column If Cells(4, i).Value = 0 Then Columns(i).EntireColumn.Hidden = True End If Next i End Sub

graycat222
質問者

お礼

うまくいきました。 とても助かりました。本当にありがとうございます。 No.2の方の方法もうまくいきましたが、 こちらの方法は縦の項目が増えても自動的に範囲を広げてくれるので 本当に助かります。 またよろしくお願いします。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.4

>縦方向のオートフィルタはできない 別のシートに行列を逆転させたシートを作成、 はどうなのでしょうか?。 あと、VBAについて参考サイト。 セル操作の参考に。 http://www.voicechatjapan.com/excelvba/VBArei3.htm http://www.asahi-net.or.jp/~ef2o-inue/menu/menu01.html >If Range("F4").Value = 0 Then >Columns("F:F").Select にある「F」や「4」は固定文字でなくて変数で同じことを表現できるので それで繰り返し部をスッキリさせます。 セルの表記、OFFSET、繰り返し処理、が参考になると思います。

graycat222
質問者

お礼

逆転シートも考えましたが、No.3のmar00さんの方法でやってみることにしました。 勉強になるサイトを教えていただきありがとうございます。 毎日少しずつ勉強して、いつの日か私が回答者になれるくらい頑張ります。

すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

例えば20列までを対象にするのでしたら次のようにします。 For ColPos = 5 To 20 If Cells(4, ColPos) <> "" And Cells(4, ColPos).Value = 0 Then Columns(ColPos).Select Selection.EntireColumn.Hidden = True End If Next

graycat222
質問者

お礼

うまく動きました。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

Sub MACRO() For Each RG In Range("E4:DD4") If RG = 0 Then RG.EntireColumn.Hidden = True ELSE RG.EntireColumn.Hidden = False End If Next RG End Sub

graycat222
質問者

お礼

うーん、うまく動きませんでしたが、 ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A