基于7个工作表的单元格值隐藏行excel VBA

时间:2017-10-23 15:13:50

标签: excel vba excel-vba rows autofilter

我搜索了数据库以回答我的问题,但我找不到类似的情况。前4个工作表在显示的姓氏和完整的相同范围/空单元格数方面始终相同。最后3个工作表也将具有相同的情况,具有完全相同的范围/#空单元格,但范围将不同于工作表1-4。我期待写VBA来根据每个工作表的A列中的单元格值隐藏整行。 A列中的单元格填充了公式。

工作表1-4范围A9-A58:

Column A
Johnson             
Peterson
Anderson
(empty)
(empty)
(empty)

工作表5-7范围A16-A65:

Column A
Johnson
Peterson
Anderson
(empty)
(empty)
(empty)

结果我正在寻找所有工作表:

Column A
Johnson
Peterson
Anderson

以下是我尝试过的代码:

Sub Macro1()
'
' Macro1 Macro
'


    Sheets("Sheet 1").Select
    Rows("19:58").Select
    Selection.EntireRow.Hidden = True
    Sheets("Sheet 2").Select
    Rows("19:58").Select
    Selection.EntireRow.Hidden = True
    Sheets("Sheet 3").Select
    Rows("19:58").Select
    Selection.EntireRow.Hidden = True
    Sheets("Sheet 4").Select
    Rows("19:58").Select
    Selection.EntireRow.Hidden = True
    Sheets("Sheet 5").Select
    Rows("26:65").Select
    Selection.EntireRow.Hidden = True
    Sheets("Sheet 6").Select
    Rows("26:65").Select
    Selection.EntireRow.Hidden = True
    Sheets("Sheet 7").Select
    Rows("26:65").Select
    Selection.EntireRow.Hidden = True
End Sub

问题是我必须手动选择空行并逐页进行才能使其正常工作。根据每张纸的特定范围内的单元格值来隐藏空行会很好。

我对VBA的编写方式持开放态度,无论是屏幕更新还是自动过滤。感谢您的帮助/专业知识!

1 个答案:

答案 0 :(得分:1)

根据我的评论,将为您提供循环工作的起点。

首先,我们将布置一些参数... 7张,2个定义的范围。让我们从范围开始:

Dim aStart as Long, aStop as Long, bStart as Long, bStop as Long
aStart = 19
aStop = 58
bStart = 26
bStop = 65

所以你的行有一些范围(a是第一个范围,b是第二个范围)。怎么办?您希望查看它们之间的每一行,也就是循环,以确定它是否包含数据,特别是在A列中。

Dim i as Long  
For i = aStart to aStop
    If Cells( i, "A").Value = "" Then
        Rows(i).EntireRow.Hidden = True
    End If
Next i

我希望看起来很简单。循环使用i作为行,同时查看A列中的迭代行,一次一个。

对于bStart / bStop,这看起来非常相似。唯一的补充是根据工作表名称/编号进行。有很多方法可以实现这一点,并且由于我只是在录制一个宏的基础上给了你很多东西,所以会让你发动旋转。