繁体   English   中英

使用Excel VBA隐藏基于单元格值的行

[英]Using Excel VBA To Hide Rows Based on Cell Value

好吧...再次返回另一个Excel问题。

这次,我有一本Excel工作簿,它具有800种化学物质/化合物的化学和物理特性。 我还有另一本工作簿,其中包含约200种这些化学物质。

我需要在800种化学药品的工作簿中做的只是显示较小工作簿中显示的化学药品。 从技术上讲,我可以检查所有800种化学物质,然后使用“过滤器”功能取消选择我不需要的所有内容,但是显然这将永远花费,而且肯定有一种更快的方法。

这是我想发生的事情:

在两个工作簿中,CAS号都是列之一。 我已将显示的化学品的所有CAS号复制到较大的工作簿的新列中。 我想做的是使用一些VBA代码,基本上是这样说的:“如果较大工作簿中的CAS编号等于较小工作簿中的CAS编号,则显示该化学物质。如果不显示,则不显示它。

如果这很难理解,那么我深表歉意,说起来很难。

This is what I started doing:

    Sub HideRows()

    BeginRow = 3
    EndRow = 802
    ChkCol = 3

    For RowCnt = BeginRow To EndRow

        If Cells(RowCnt, ChkCol).Value = "A3" Then
            Cells(RowCnt, ChkCol).EntireRow.Hidden = True
        Else
            Cells(RowCnt, ChkCol).EntireRow.Hidden = False
        End If
        Next RowCnt


    End Sub

我认为那是不对的。 有任何想法吗?

尝试这个。

将此例程放在标准代码模块中。

Public Sub Ryan_C()

    Dim rCrit As Range, rData As Range

    With Sheets("Sheet1").[a1]
        Set rData = .Resize(.Item(.Parent.Rows.Count).End(xlUp).Row, .Item(, .Parent.Columns.Count).End(xlToLeft).Column)
    End With

    With Sheets("Sheet2").[a1]
        Set rCrit = .Resize(.Item(.Parent.Rows.Count).End(xlUp).Row)
    End With

    rData.AdvancedFilter xlFilterInPlace, rCrit

End Sub

注意:这假设Sheet1中包含800种化合物,Sheet2中包含200个CAS注册表编号。 根据需要编辑工作表名称。

注意:这假定两张纸中的数据均始于单元格A1中。

注意:还要确保两个表头顶部的CAS标头都匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM