Excel - 행을 필터링할 때 빈 열을 자동으로 숨기는 방법이 있나요?

Excel - 행을 필터링할 때 빈 열을 자동으로 숨기는 방법이 있나요?

NOSQL 데이터베이스에서 가져온 데이터로 작업하고 있습니다.

때로는 1000개 열이 포함된 워크시트를 얻거나 대부분의 셀에 데이터가 없는 경우도 있습니다.

데이터를 필터링하고 특정 행만 표시할 때 데이터가 전혀 없는 보이는 행의 모든 ​​열이 자동으로 숨겨지는 방법을 찾고 있습니다.

이렇게 하면 정보를 찾기 위해 수백 개의 빈 열을 가로로 스크롤할 필요가 없습니다.

이러한 요구에 대한 해결책이 있다면 감사하겠습니다.

감사해요,

하난 코헨

답변1

이 코드는 헤더 셀만 채워진 경우 열을 숨깁니다.

Sub KolumnHider()
    Dim wf As WorksheetFunction
    Dim i As Long, r As Range

    Set wf = Application.WorksheetFunction
    For i = 1 To 1000
        Set r = Cells(1, i).EntireColumn
        If wf.CountA(r) < 2 Then r.Hidden = True
    Next i
End Sub

열 헤더가 없으면2으로1.

답변2

이 VBA 코드는 헤더 유무에 관계없이 모든 빈 열을 숨깁니다.

Private Sub CommandButton1_Click()

  Dim rng As Range
  Dim nLastRow As Long
  Dim nLastColumn As Integer
  Dim i As Integer
  Dim HideIt As Boolean
  Dim j As Long

  Set rng = ActiveSheet.UsedRange
  nLastRow = rng.Rows.Count + rng.Row - 1
  nLastColumn = rng.Columns.Count + rng.Column - 1

  For i = 1 To nLastColumn
     HideIt = True

  For j = 2 To nLastRow

    If Cells(j, i).Value <> "" Then
      HideIt = False
    End If
  Next

    If HideIt = True Then
      Columns(i).EntireColumn.Hidden = True
    End If
  Next

End Sub

노트:

  • 메뉴에서 표준 필터 명령을 사용하여
    레코드를 필터링하는 경우 먼저 이 코드를 실행한 다음 필터링하세요.
  • VBA 코드를 사용하여 레코드를 필터링하는 경우 코드 내에서 먼저 이 서브루틴을 호출하세요. 이 경우 "CommandButton1_Click"을 "Private Sub HideBlankColumn()"과 같은 다른 이름으로 바꾸는 것이 더 좋습니다.

여기에 이미지 설명을 입력하세요

답변3

적용된 필터를 처리하고, 가능한 한 빨리 내부 루프를 종료하고, 적용된 필터가 표시되는 행을 변경하는 경우 열 숨김을 해제하기 위해 Rajesh S 코드를 수정했습니다. 필터링 후 HydeEmptyColumns를 실행합니다.

Public Sub HydeEmptyColumns()

  Dim rng As Range
  Dim nLastRow As Long
  Dim nLastColumn As Integer
  Dim i As Integer
  Dim HideIt As Boolean
  Dim j As Long

  Set rng = ActiveSheet.UsedRange
  nLastRow = rng.Rows.Count + rng.row - 1
  nLastColumn = rng.Columns.Count + rng.Column - 1

  For i = 1 To nLastColumn
    HideIt = True

    For j = 2 To nLastRow
      If Not Rows(j).Hidden Then
        If Cells(j, i).Value <> "" Then
          HideIt = False
          Exit For
        End If
      End If
    Next

    Columns(i).EntireColumn.Hidden = HideIt
  Next

End Sub

관련 정보