隐藏基于False值的行

时间:2019-01-02 20:31:50

标签: excel vba

我正在使用Excel和VB制作一个工作表,该工作表可基于复选框隐藏信息行。我已经完成的工作是设置一列“ U”,以便显示是否选中了该框(是/否)。我需要创建一个宏,以便如果该框为假(未选中),它将被隐藏。这是我到目前为止的内容:

Sub HideCells()

   If Range("U2").Value = "False" Then
       Rows("2:2").EntireRow.Hidden = True
   ElseIf Range("U2").Value = "True" Then
       Rows("2:2").EntireRow.Hidden = False
   End If

End Sub

现在这适用于单行,但是如何将范围从U2扩展到U2:U300?

谢谢。

2 个答案:

答案 0 :(得分:0)

要从第二行到第300行进行基本循环,我们定义一个新变量I,该变量将保存当前值/行。然后,将行引用替换为值i并对其进行循环。

Sub HideCells()
 Dim i As Long
For i = 2 to 300
   If Range("U" & i).Value = "False" Then
       Rows(i).EntireRow.Hidden = True
   ElseIf Range("U" & i).Value = "True" Then
       Rows(i).EntireRow.Hidden = False
   End If
 Next i

End Sub

答案 1 :(得分:0)

您可以将Emily的答案减少到一行。不要忘记关闭屏幕更新:

SELECT d.*
FROM (SELECT uid, COUNT(*) AS num_donations,
             ROW_NUMBER() OVER (ORDER BY COUNT(*) DESC) as position
      FROM donations
      WHERE month = ? AND year = ?
      GROUP BY uid
     ) d
WHERE uid = ?;

但是最快的方法是使用自动筛选。如果您有兴趣,我可以更新答案以包含此代码。