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

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

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

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

1 ответ1

0

Это, очевидно, потребует некоторого 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, то ... ничего не скрывается. Если это не ваше желаемое поведение, то дайте мне знать, и я могу переписать, чтобы вы там оказались.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .