列の非表示
合計行の値が「0」の場合にその列を非表示にするマクロ。
列数を26で割った整数値と剰余値をそれぞれアルファベットに置き換えることで対応。
注意すべき点は、末尾がAA以降で末尾が「Z」の場合の処理かな。
' 最終列数取得 tp_end_col = Range("IV1").End(xltoLeft).Column ' 最終行数取得 tp_end_row = Range("A65536").End(xlUp).Row ' 列数非表示 For i = 6 To tp_end_col ' 合計数取得 total_number = Cells(tp_end_row, i) ' 0の場合 If total_number = 0 Then ' Z列よりも後の列の場合 If i > 26 Then ' 整数値取得 int_i = i \ 26 ' 剰余取得 sur_i = i Mod 26 If sur_i = 0 Then ' - AZ〜HZまでの末尾がZの場合の処理 - int_i = int_i - 1 before_str = Chr(int_i + 96) after_str = "z" Else ' - AA〜IVまでの処理(AZ〜HZまでの末尾がZの場合を除く) - before_str = Chr(int_i + 96) after_str = Chr(sur_i + 96) End If ' 文字列結合 str_i = before_str & after_str Else ' - A〜Zまでの処理 - str_i = Chr(i + 96) End If ' 列指定 Columns(str_i & ":" & str_i).Select ' 非表示 Selection.EntireColumn.Hidden = True End If Next i
ちなみに、列の非表示部分で、セルの結合をしている箇所があると非表示できない。