我现在正在用VBA编程一个工具,我在编写IF
公式时遇到了问题。我有两个工作表“网站”和“概述”,我想编写一个IF
公式为“现场”工作表范围列L.如何在vba中实现Excel公式
在Excel公式栏是下面的公式
=IF(ISBLANK('Overview'!$Q$2:$Q$17), 'Site'L2:L17, 'Overview',Q2:Q17)
如何在VBA中使用正确的语法编写和实现此公式。提前致谢。
我现在正在用VBA编程一个工具,我在编写IF
公式时遇到了问题。我有两个工作表“网站”和“概述”,我想编写一个IF
公式为“现场”工作表范围列L.如何在vba中实现Excel公式
在Excel公式栏是下面的公式
=IF(ISBLANK('Overview'!$Q$2:$Q$17), 'Site'L2:L17, 'Overview',Q2:Q17)
如何在VBA中使用正确的语法编写和实现此公式。提前致谢。
为了您的公式,目前还不清楚它是在细胞中,它不能在“网站”列L或“总览”栏Q,你的问题建议,因为这样你将有一个循环引用。我会以为这是在“概述” L列
现在使用VBA If
逻辑。
' Shorthand "With" to prefix "Sheets" with a dot "." means always reference this workbook
With ThisWorkbook
Dim vcell as Range
For Each vcell in .Sheets("Overview").Range("L2:L17")
' Check if column Q cell on same row is blank
If .Sheets("Overview").Range("Q" & vcell.row).Text = "" then
' Value if vcell is blank
vcell.Value = .Sheets("Site").Range("L" & vcell.row).value
Else
' Value if vcell is not blank
vcell.Value = .Sheets("Overview").Range("Q" & vcell.row).value
End If
End With
如果你已经习惯了在Excel单元格的公式写作而不是在VBA中,你可能会发现VBA的WorksheetFunction能力使用:MSDN Worksheet Function Documentation。不过,您最好使用原生If
逻辑来增加功能和多功能性,这就是为什么If
没有工作表功能的原因。
另请注意将单元格公式复制到代码的工作表函数部分。表格名称的引用会导致问题。我提到这一点,因为在VBA中,撇号'
将开始评论,所以代码将被忽略!
您可以使用“立即如果”这种类型的事情,但请务必充分认识到这句法的潜在陷阱:
https://support.office.com/en-gb/article/IIf-Function-32436ecf-c629-48a3-9900-647539c764e3
像这样:
Set myRange = IIf([ISBLANK(Overview!$Q$2:$Q$17)], Sheets("site").Range(L2:L17), Sheets("Overview").Range("Q2:Q17"))
是你试图用VBA进行计算,还是生成一个将在VBA中包含你的公式的字符串? – JamesFaix
if函数需要3个参数,我已经在你的文章中计算了4个参数。你能分享一下这个公式的成就吗? –