1
我想在Excel中完成一个小的VBA项目,目的是让我比使用内置的过滤器/搜索选项更容易地过滤数据。基本上,我有一个表单,其中包含与数据标题相关的一些用户输入。对于要搜索的值,我有一个公差带的输入,例如输入为:标头名称;名义搜索值;公差。然后它会查找在该容差范围内的所有数据行。VBA找到两个其他人之间的任何值
下面是我希望循环运行并将每行复制到新工作表的代码。我想将范围“fc”设置为等于在ssMin和ssMax之间找到的第一个单元格。我最好使用If块吗?
Private Function searchCells(ifc)
Dim ss As Integer
Dim fc As Range
Dim ssMax As Integer
Dim ssMin As Integer
ss = lstboxChannelList.List(ifc, 1)
ssMax = ss + lstboxChannelList.List(ifc, 2)
ssMin = ss - lstboxChannelList.List(ifc, 2)
Set fc = Cells.Find(What:=(ssMin <= ssMax), After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
fc.Select
End Function
你'什么:=(ssMin <= ssMax)'几乎可以肯定是相当于'什么:= TRUE;(假定'ssMin'小于或等于'ssMax'),所以这种方法获得了没有工作。是的,使用循环来循环数据并测试每个单独的单元格以查看它是否符合条件会更好。 (如果它只是一个你正在搜索的列,它**可能只用'Index'和'Match'操作就可以完成,但是,由于你的数据在整个工作表中的任何地方,我不认为这对你来说是可能的。) – YowE3K
你也可以考虑从用户表单中获取输入,并将其用作Excel简单或高级过滤器的标准。比循环遍历所有单元更快,并且仍然可以使用VBA完成以简化设置标准。使用高级过滤器,您可以使用'CopyTo'参数。使用简单过滤器,您可以在过滤后复制可见单元格。 –
谢谢,我今天将尝试这些方法,看看我如何继续,并希望在解决问题后发布答案。 –