2016-12-20 134 views
0

我现在正在用VBA编程一个工具,我在编写IF公式时遇到了问题。我有两个工作表“网站”和“概述”,我想编写一个IF公式为“现场”工作表范围列L.如何在vba中实现Excel公式

在Excel公式栏是下面的公式

=IF(ISBLANK('Overview'!$Q$2:$Q$17), 'Site'L2:L17, 'Overview',Q2:Q17) 

如何在VBA中使用正确的语法编写和实现此公式。提前致谢。

+0

是你试图用VBA进行计算,还是生成一个将在VBA中包含你的公式的字符串? – JamesFaix

+0

if函数需要3个参数,我已经在你的文章中计算了4个参数。你能分享一下这个公式的成就吗? –

回答

0

为了您的公式,目前还不清楚它是在细胞中,它不能在“网站”列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中,撇号'将开始评论,所以代码将被忽略!