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