1

Я работаю с данными, которые импортированы из базы данных NOSQL.

Иногда я получаю рабочие листы с 1000 столбцами и выше, где в большинстве ячеек нет данных.

Я ищу способ, которым, когда я фильтрую данные и показываю только определенные строки, все столбцы для видимых строк, у которых вообще нет данных, будут скрыты автоматически.

Таким образом, мне не придется горизонтально прокручивать сотни пустых столбцов в поисках информации.

Если у вас есть решение этой проблемы, я буду благодарен.

Спасибо,

Ханан Коэн

2 ответа2

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.

0

Этот код 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()».

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .