2017-12-27 933 views
0

我在Excel中创建了一个搜索表格,我想用VBA代码搜索工作簿其余部分中的特定单词。这是我的表格的一个例子。VBA搜索表格排除空白单元格

水果 商店 区

我已经设置这些值作为一个字符串,但我有具有一个项目的空白,然后运行宏麻烦。所以,如果我只想找到水果和面积,它不会运行,因为商店是空白的。有没有一种方法可以搜索工作簿而不必填写每行?

这是我用来复制数据的代码。

finalrow = Cells(Rows.Count, 1).End(xlUp).Row 



For i = 1 To finalrow 
If Cells(i, 1) = Fruits And Cells(i, 2) = Store And Cells(i, 3) = Area Then 
Range(Cells(i, 1), Cells(i, 3)).Copy 
ssheet.Select (Workbook sheet to paste) 
Range("A100").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues 
+0

的还是给了我一个结果,对于任何两个词,我希望它返回一个只具有两个标准 – Tara

+0

如何做价值您可以确定最终需要哪个标准。无论“Store”是空白还是填充,您总是希望它仅查找“Fruit”和“Area”存在的时间? –

+0

你好,我希望它找到水果和面积匹配的值,即使商店留空。 – Tara

回答

2

使用IIF():

If IIF(Fruits<>"",Cells(i, 1) = Fruits,True) And _ 
    IIF(Store<>"",Cells(i, 2) = Store,True) And _ 
    IIF(Area<>"",Cells(i, 3) = Area,True) Then 

同时请避免使用选择的。也只是想值时只分配值,并跳过剪贴板:

With ActiveSheet 
    finalrow = .Cells(Rows.Count, 1).End(xlUp).Row 

    For i = 1 To finalrow 
     If IIf(Fruits <> "", .Cells(i, 1) = Fruits, True) And _ 
      IIf(Store <> "", .Cells(i, 2) = Store, True) And _ 
      IIf(Area <> "", .Cells(i, 3) = Area, True) Then 

      ssheet.Range("A100").End(xlUp).Offset(1, 0).Resize(1, 3).Value = .Range(.Cells(i, 1), .Cells(i, 3)).Value 
     End If 
    Next i 
End With 
+0

这不起作用,有什么我失踪? – Tara

+0

你是什么意思,没有工作。这可能是很多事情。 –

+0

你好,最后一部分没有工作。这是说.Range和.Cell是无效或无资格的参考 – Tara