Скрыть столбцы на основе содержимого (суммы строк)

Скрыть столбцы на основе содержимого (суммы строк)

Я пытаюсь скрыть столбцы на основе суммы выбранных строк (т. е. ячеек) в этих столбцах.

Например, если сумма E9:E12 равна 0, то скрыть столбец E.

Кроме того, и это, возможно, немного сложнее, — если столбец не будет скрыт, убедитесь, что следующий столбец не будет скрыт, даже если сумма соответствующих ему строк равна нулю.

Например, если сумма E9:E12 не равна 0, то не скрывайте E и не скрывайте столбец F, даже если сумма F9:F12 равна нулю.

решение1

Очевидно, что для этого потребуется немного VBA. Я вижу потенциальную проблему с вашей логикой, но VBA сделает именно так, как вы просили. Я расскажу о проблеме в конце.

Откройте VBE с помощью Ctrl+F11 и создайте новый модуль для вашей рабочей книги. В этом модуле добавьте:

Sub hideColumns()
    Dim ws as Worksheet
    Set ws = Sheets("YOUR SHEET NAME") '<--CHANGE THIS TO YOUR SHEET

    Dim col As Range
    Dim row, sum As Integer

    'loop through every column in the worksheet
    For Each col In ws.Columns

        'Resetting the sum for this column
        sum = 0

        'Loop through rows 9 to 12 to get their sum
        For row = 9 To 12 '<--Rows that you want to sum in each column
            sum = sum + ws.Cells(row, col.Column).Value
        Next row

        'Only hide the column if the sum is 0 and previous column is not hidden
        '    OR if the sum is 0 and this is the first column (there would be no previous column)        
        col.Hidden = ((sum = 0) And Not Cells(1, col.Column - 1).Hidden) Or ((sum = 0) And col.Column = 1)

    Next col
End Sub

Теперь проблема: мы проходим по каждому столбцу, и, предположим, что мы не сталкиваемся с суммой 0 до столбца 3... тогда, поскольку столбец 2 виден, то по вашей логике мы не скрываем столбец 3... повторяйте, пока не дойдете до конца листа. По сути, логика, которую вы описываете, закроет столбцы, пока не встретится столбец с суммой 0. Если этот столбец с суммой 0 — столбец 1, то... ничего не скрывается. Если это не то поведение, которое вы хотите, то дайте мне знать, и я смогу переписать, чтобы вы этого добились.

Связанный контент