2016-12-20 349 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中,撇號'將開始評論,所以代碼將被忽略!