列の非表示


合計行の値が「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


ちなみに、列の非表示部分で、セルの結合をしている箇所があると非表示できない。