Excel – gibt es eine Möglichkeit, beim Filtern von Zeilen leere Spalten automatisch auszublenden?

Excel – gibt es eine Möglichkeit, beim Filtern von Zeilen leere Spalten automatisch auszublenden?

Ich arbeite mit Daten, die aus einer NOSQL-Datenbank importiert werden.

Manchmal erhalte ich Arbeitsblätter mit 1.000 Spalten und mehr, bei denen die meisten Zellen keine Daten enthalten.

Ich suche nach einer Möglichkeit, bei der beim Filtern der Daten und Anzeigen nur bestimmter Zeilen alle Spalten der sichtbaren Zeilen, die überhaupt keine Daten enthalten, automatisch ausgeblendet werden.

Auf diese Weise muss ich auf der Suche nach Informationen nicht horizontal durch Hunderte von leeren Spalten scrollen.

Wenn Sie eine Lösung für dieses Problem haben, wäre ich dankbar.

Danke,

Hanan Cohen

Antwort1

Dieser Code blendet Spalten aus, wenn nur die Kopfzelle ausgefüllt ist:

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

Wenn keine Spaltenüberschriften vorhanden sind, dann machen Sie die2in ein1.

Antwort2

Dieser VBA-Code blendet alle leeren Spalten aus, unabhängig davon, ob sie eine Kopfzeile haben oder nicht.

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

Anmerkungen:


  • Wenn Sie zum Filtern der Datensätze einen Standardfilterbefehl aus dem Menü verwenden , führen Sie zuerst diesen Code aus und filtern Sie dann.
  • Wenn Sie VBA-Code zum Filtern der Datensätze verwenden, rufen Sie diese Subroutine zuerst in Ihrem Code auf. In diesem Fall wäre es besser, „CommandButton1_Click“ durch einen anderen Namen zu ersetzen, beispielsweise „Private Sub HideBlankColumn()“.

Bildbeschreibung hier eingeben

Antwort3

Ich habe den Rajesh S-Code geändert, um angewendete Filter zu berücksichtigen, die interne Schleife so schnell wie möglich zu verlassen und Spalten einzublenden, wenn angewendete Filter die sichtbaren Zeilen ändern. Führen Sie HydeEmptyColumns nach dem Filtern aus.

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

verwandte Informationen