在Excel 2013中,当行在列C到列H中的值为0时,我想隐藏行和它上面的行。列C到列H是合并的单元格。例如,如果C7:H7的值为0,我想隐藏第7行和第6行。这个C6的整个范围:H53。每隔一个奇数行都有文本或0。当奇数行号为0时,我想隐藏该行和它上面的偶数行号。对于工作簿中的另一个范围(C77:H233),我有一个工作宏,它隐藏了一个0值的行但是我无法找出正确的代码来隐藏行加上上面的行为C6:H53的范围。
Row #/COL A COL B COL C COL D COL E COL F COL G COL H
4 SALES/GROSS MARGIN
5 Sales Costs GP% Bdgt % Bdgt Diff
6 Siding 0 0 #DIV/0! #DIV/0!
7 0.00
8 Tile 0 0 #DIV/0! #DIV/0! 0.00
9 0.00
10 Tools & Hardware 330 -315 0.045454545 #VALUE!
11 Two sales to Joe Roofing and Riviera Ridge Roofing with
no budget. No comment from managers.
12 Windows 0 0 #DIV/0! #DIV/0!
13 0.00
14 Fabricated Products 0 0 #DIV/0! #DIV/0!
15 0.00
在上面的例子中,C7行中的值为0:H7我想隐藏第6行和第6行。 7,用C9中的值:H9 0然后隐藏行8& 9,用C13中的值:H13 0然后隐藏12& 13,用C15中的值:H15 0然后隐藏14& 15等我想要Rows 10& 11显示为C11:H11中有文字。
我尝试过的许多代码中的最后一个没有成功
Sub HideSales()
Dim cell As Range
For Each cell In Range("Sales")
If Sales.Address = "C7:H7" Then
If cell.Value = 0 Then
Rows(6:7).EntireRow.Hidden = True
Else
Rows(6:7).EntireRow.Hidden = False
End If
End Sub
VBE不喜欢几行 - 第一行Sub HideSales()以黄色突出显示,两行都有行(6:7)以红色突出显示。
不知道下一步该去哪里。放弃其他2个网站 - 甚至无法提交问题。
答案 0 :(得分:0)
如果在C列中过滤掉零(从第6行开始),然后收集并存储该范围,您应该能够释放过滤器并用零隐藏行。
Sub hide_zeros()
Dim rZEROs As Range
On Error GoTo bm_Safe_Exit
appTGGL bTGGL:=False
With Worksheets("Sheet5")
If .AutoFilterMode Then .AutoFilterMode = False
.UsedRange.Offset(5, 0).EntireRow.Hidden = False
With .Range(.Cells(5, 3), .Cells(Rows.Count, 3).End(xlUp))
Debug.Print .Address(0, 0)
'.EntireRow.Hidden = False
.AutoFilter Field:=1, Criteria1:="=0", _
Operator:=xlOr, Criteria2:="=0.00"
With .Resize(.Rows.Count - 1, .Columns.Count).Offset(1, 0)
If CBool(Application.Subtotal(103, .Cells)) Then
Set rZEROs = .SpecialCells(xlCellTypeVisible)
End If
End With
.AutoFilter
If Not rZEROs Is Nothing Then _
rZEROs.EntireRow.Hidden = True
End With
End With
bm_Safe_Exit:
appTGGL
End Sub
Sub appTGGL(Optional bTGGL As Boolean = True)
Application.ScreenUpdating = bTGGL
Application.EnableEvents = bTGGL
Application.DisplayAlerts = bTGGL
End Sub
在:
后: