我正在尝试在VBA脚本中创建一个IF语句。最终目的是在满足IF语句条件时,将内容从一个工作表(“Database”)复制到另一个工作表(“Search”)。
脚本首先通过定义变量(“country”,“category”)来依赖于“Search”工作表的单元格“E5”和“E7”中的用户输入。它还定义了IF语句运行的最终行:
除此之外,一切都很顺利。 你有任何想法,我可能做错了什么吗? 谢谢!
脚本首先通过定义变量(“country”,“category”)来依赖于“Search”工作表的单元格“E5”和“E7”中的用户输入。它还定义了IF语句运行的最终行:
country = Sheets("Search").Range("E5").Value
category = Sheets("Search").Range("E7").Value
finalrow = Sheets("Database").Range("A200000").End(xlUp).Row
接下来,脚本会设定一个条件:如果在“数据库”表格的单元格中找到与“国家”和“类别”单元格中输入值匹配的内容,则将该表格上的值复制到“搜索”表格上:
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
我想在IF语句中添加一个OR语句的附加条件。我想让它这样做:如果用户没有填写“category”单元格,则仍然将值从一个工作表复制到另一个工作表。就代码而言,我已经添加了**之间的部分,但它没有起作用:
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
除此之外,一切都很顺利。 你有任何想法,我可能做错了什么吗? 谢谢!
category
是否等于一个空白字符?你的意思是指Or category = ""
(即,category 等于空字符串)吗? - FDavidovAND
和OR
拥有不同的优先级,所以最好使用括号来强制指定检查发生的特定顺序。 - FDavidovTrim(category)=""
。 - David ZemensIf A And (B Or C)
和If (A And B) Or C
之间可能存在差异。 - David Zemens