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

相關內容