Vba 确定具有某些值的excel列
我的目标是确定工作表中具有某些值的列。如果列没有值,则应将其隐藏。我已尝试将其作为:Vba 确定具有某些值的excel列,vba,excel,Vba,Excel,我的目标是确定工作表中具有某些值的列。如果列没有值,则应将其隐藏。我已尝试将其作为: Sub HideEmptyCols() Dim LastCol As Long, i As Long LastCol = ActiveSheet.UsedRange.Columns.Count For i = 1 To LastCol If WorksheetFunction.Count(Columns(i)) = 0 Then Columns(
Sub HideEmptyCols()
Dim LastCol As Long, i As Long
LastCol = ActiveSheet.UsedRange.Columns.Count
For i = 1 To LastCol
If WorksheetFunction.Count(Columns(i)) = 0 Then
Columns(i).EntireColumn.Hidden = True
End If
Next i
End Sub
如果一个列没有任何值,它可以正常工作,但如果一个列在最后一行中有值,它也会隐藏该列。我正在寻找到底为什么会发生这种情况,以及如何实现这一目标 试试看:
Sub ColumnHider()
Dim wf As WorksheetFunction
Set wf = Application.WorksheetFunction
Set r = ActiveSheet.UsedRange
nLastRow = r.Rows.Count + r.Row - 1
nLastColumn = r.Columns.Count + r.Column - 1
For i = 1 To nLastColumn
Set rcol = Cells(1, i).EntireColumn
If wf.CountA(rcol) = 0 Then
rcol.Hidden = True
End If
Next i
End Sub
编辑1:
如果标题下的所有单元格均为空,则此版本将隐藏该列:
Sub ColumnHider()
Dim wf As WorksheetFunction
Set wf = Application.WorksheetFunction
Set r = ActiveSheet.UsedRange
nLastRow = r.Rows.Count + r.Row - 1
nLastColumn = r.Columns.Count + r.Column - 1
For i = 1 To nLastColumn
Set rcol = Range(Cells(2, i), Cells(Rows.Count, i))
If wf.CountA(rcol) = 0 Then
rcol.EntireColumn.Hidden = True
End If
Next i
End Sub
回答了50%的问题,但为什么会出现这种情况?@mehow如果不看OP的工作表,我就无法回答这个问题。我的第一列有标题,但只有在顶行没有任何值时才起作用。如果顶行有值,则该列不是空的,并且该列不应隐藏。除了headerColumn,如果列没有值,则必须将其隐藏。希望它更清楚。