我正在尝试在VBA脚本中创建IF语句。它最终想要达到的目的是在满足IF声明的情况下,将内容从一张表("数据库")复制到另一张表(" Search")。
该脚本首先定义变量(" country"," category"),这取决于用户对单元格的输入" E5"和" E7" "搜索"片。它还定义了If语句的最后一行,直到该行:
country = Sheets("Search").Range("E5").Value
category = Sheets("Search").Range("E7").Value
finalrow = Sheets("Database").Range("A200000").End(xlUp).Row
在此之后,脚本建立条件:如果输入的值(在单元格" country"" category"中)与"的单元格上的内容匹配。数据库"表格,然后应将此表格上的值复制到"搜索"片:
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
除此之外,一切都很顺利。 你知道我可能做错了什么吗? 谢谢!
答案 0 :(得分:2)
如果它给你带来问题,我会完全避开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