У меня есть электронная таблица с поддержкой макросов, которая позволяет мне скрывать различные столбцы и строки на основе определенных критериев, которые я выбираю и запускаю на листе.
Сначала я выбираю соответствующие столбцы, помечая этот столбец буквой «Y» и скрывая оставшиеся столбцы буквой «N» с помощью следующей процедуры:
Sub Hidecolumn()
Dim p As Range
For Each p In Range("H1:BN1").Cells
If p.Value = "N" Then
p.EntireColumn.Hidden = True
End If
Next p
End Sub
Обратите внимание, что столбцы («A: G») всегда будут видны. Только столбцы ("H: BN") могут быть скрыты на основании вышеизложенного. Это отлично работает.
Затем я скрою различные строки, которые не имеют значения в оставшихся видимых столбцах для столбцов («H: BN»), что составляет 59 возможных столбцов. Если какой-либо столбец в этой строке имеет значение, эта строка останется видимой. Если в видимых столбцах этой строки НЕТ значений, я скрываю эту строку. Вполне возможно, что 59 столбцов можно уменьшить до 7. Я делаю это с помощью следующей процедуры:
Sub HideRowsSecond()
Module2.Unhiderow
Dim srcRng As Range, ws As Worksheet
Set ws = ActiveSheet
Set srcRng = ws.Rows("5:" & ws.Cells(ws.Rows.Count, 4).End(xlUp).Row)
Dim R As Range, hideRng As Range
For Each R In srcRng
If Application.CountA(R.Columns("H:BN").SpecialCells(xlCellTypeVisible)) = 0 Then
If hideRng Is Nothing Then
Set hideRng = R.EntireRow
Else
Set hideRng = Application.Union(hideRng, R.EntireRow)
End If
End If
Next R
If Not hideRng Is Nothing Then hideRng.EntireRow.Hidden = True
MsgBox ("Complete")
End Sub
Обратите внимание, что начальная строка - это строка («5»), и мы используем столбец («D») в качестве столбца подсчета, потому что он имеет значение в каждой ячейке вплоть до нижней части набора данных. Это прекрасно работает.
Теперь, когда у меня есть желаемый набор данных, мне нужно сохранить этот видимый набор данных в новый файл XLSX, который пользователь может назвать себе и сохранить в каталоге по своему выбору. Целевой диапазон начинается с ячейки «C3», и нам нужно сохранить столько видимых столбцов, которые расположены справа, и столько видимых строк, которые находятся внизу набора данных.
Может кто-нибудь помочь мне с этим последним шагом?