根據內容隱藏列(行的總和)

根據內容隱藏列(行的總和)

我試圖根據這些列中選定行(即單元格)的總和來隱藏列。

例如 - 如果 E9:E12 總和為 0,則隱藏 E 列。

此外,可能有點困難 - 如果一列不會被隱藏,請確保下一列不會隱藏,即使其相應行的總和為零。

例如 - 如果 E9:E12 總和不為 0,則不隱藏 E,也不隱藏 F 列,即使 F9:F12 總和為零。

答案1

顯然,這需要一些 VBA 才能完成。我發現您的邏輯有潛在問題,但 VBA 會完全按照您的要求執行。我最後再說一下這個問題。

使用 Ctrl+F11 開啟 VBE 並為您的工作簿建立一個新模組。在該模組中新增:

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

現在的問題是:我們循環遍歷每一列,假設直到第 3 列我們才遇到 0 之和...然後因為第 2 列可見,那麼按照你的邏輯,我們不會隱藏第 3 列..重複直到到達紙張的末尾。本質上,您概述的邏輯將關閉列,直到遇到總和為 0 的列。如果這不是您想要的行為,請告訴我,我可以重寫以幫助您實現目標。

相關內容