如何在Excel VBA中使用OR和空单元格创buildIF语句

我正在尝试在VBA脚本中创buildIF语句。 最终想要实现的是将内容从一张表(“数据库”)复制到另一张表(“search”),只要符合IF语句。

脚本首先定义variables(“国家”,“类别”),依赖于用户在“search”工作表的单元格“E5”和“E7”上的input。 它还定义了要在该行之前运行的If语句的最后一行:

country = Sheets("Search").Range("E5").Value category = Sheets("Search").Range("E7").Value finalrow = Sheets("Database").Range("A200000").End(xlUp).Row 

在此之后,脚本build立条件:如果input的值(在“国家”和“类别”中的单元格)与“数据库”表格的单元格上的内容相匹配,则应将该表格上的值复制到“search“表单:

 For i = 2 To finalrow If Sheets("Database").Cells(i, 1) = country And _ Sheets("Database").Cells(i, 3) = category Then With Sheets("Database") .Range(.Cells(i, 1), .Cells(i, 9)).Copy End With Sheets("Search").Range("B600").End(xlUp).Offset(1, 0).PasteSpecial xlPasteFormulasAndNumberFormats End If Next I 

我想用一个OR语句为IF语句添加一个附加条件。 我想这样做,如果用户不填写“类别”单元格,值仍然从一个表复制到另一个。 在代码方面,我添加了**之间的部分,但它不工作:

 For i = 2 To finalrow If Sheets("Database").Cells(i, 1) = country And _ Sheets("Database").Cells(i, 3) = category **Or category = ""** Then With Sheets("Database") .Range(.Cells(i, 1), .Cells(i, 9)).Copy End With Sheets("Search").Range("B600").End(xlUp).Offset(1, 0).PasteSpecial xlPasteFormulasAndNumberFormats End If Next i 

除此之外,一切都很好。 你有什么想法,我可能做错了什么? 谢谢!

我只是避免Or完全如果它给你的问题。 如果你的意思是空白使用""IsEmpty(Category) :“

 For i = 2 To finalrow If Category = "" Then If Sheets("Database").Cells(i, 1) = country Then With Sheets("Database") .Range(.Cells(i, 1), .Cells(i, 9)).Copy End With Sheets("Search").Range("B600").End(xlUp).Offset(1, 0).PasteSpecial xlPasteFormulasAndNumberFormats End If Else If Sheets("Database").Cells(i, 1) = country And _ Sheets("Database").Cells(i, 3) = Category Then With Sheets("Database") .Range(.Cells(i, 1), .Cells(i, 9)).Copy End With Sheets("Search").Range("B600").End(xlUp).Offset(1, 0).PasteSpecial xlPasteFormulasAndNumberFormats End If Next i