내용(행 합계)을 기준으로 열 숨기기

내용(행 합계)을 기준으로 열 숨기기

해당 열에서 선택한 행(예: 셀)의 합계를 기준으로 열을 숨기려고 합니다.

예를 들어 E9:E12의 합이 0이면 E열을 숨깁니다.

또한, 아마도 조금 더 어려울 것입니다. 열이 숨겨지지 않을 경우 해당 행의 합이 0이더라도 다음 열이 숨겨지지 않도록 해야 합니다.

예를 들어 E9:E12의 합이 0이 아닌 경우 F9:F12의 합이 0이더라도 E를 숨기지 않고 F열을 숨기지 않습니다.

답변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인 열을 만날 때까지 열을 닫습니다. 합계가 0인 열이 열 1이면... 아무것도 숨겨지지 않습니다. 이것이 원하는 동작이 아닌 경우 알려주시면 해당 동작에 도달할 수 있도록 다시 작성해 드리겠습니다.

관련 정보