我現在正在用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個參數。你能分享一下這個公式的成就嗎? –