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

好吧…再回到另一个Excel问题。

这一次,我有一个Excel工作簿,其化学和物理特性为800化学品/化合物。 我有另一本有大约200种这样的化学品的工作手册。

在800工作簿中我需要做的只是显示在较小的工作簿中显示的化学物质。 我可以在技术上通过所有800种化学物质,并使用“filter”function来取消我不想要的一切,但显然这将永远存在,而且肯定有更快的方法。

下面我想的是需要发生的事情:

在这两个工作簿中,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 

注意:这假设800个化合物在Sheet1中,200个CAS注册号在Sheet2中。 根据需要编辑图纸名称。

注意:这假定两张表中的数据都在单元格A1中开始。

注意:它也承担在两张片材匹配的顶部的CAS头。