[英]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.