2012-12-29 58 views
0

我的任務寫一個公式,其中包括如果IFERROR和VLOOKUP如果錯誤和VLOOKUP在VBA宏

我需要運用公式,直到最後一排的含有值結束。

如果VLOOKUP拋出NA,則該信元應該是空白的,othewise該值應與數值「1」

,但是設法式但是當它被給錯誤

Sub testt() 

Dim l As Long 

l = Sheets(1).Range("A1:A" & Sheets(1).Cells(Sheets(1).Rows.Count, "A").End(xlUp).Row).Count 
    With Sheets("Sheet1") 
     .Range("d1").Formula = "=IF(iferror(vlookup(c2,$D:$D,1,false),""),"",1)" 
     .Range("d1").AutoFill Destination:=Range("d1:d" & l), Type:=xlFillDefault 

    End With 

End Sub 
+0

很少有你的例子中沒有任何意義的東西。對於初學者,您對最後一行的計算使用同一公式中的表格(3)和表格(1),然後使用表格(「表格3」)和結果。另外,公式中的'IF'語句沒有條件值。您應該首先在電子表格中嘗試您的公式。 – CuberChase

+0

@CuberChase:我改變了公式。希望現在你更好地理解它 – newjenn

回答

0

我認爲問題在於公式的IF部分,特別是邏輯測試。用於電子表格IF函數的公式是:

=IF(logical_test, value_if_true, value_if_false) 

邏輯測試(通過Excel幫助文件),其可被評估爲TRUE或FALSE的值或表達式。例如,A10 = 100是一個邏輯表達式;如果單元格A10中的值等於100,則表達式評估爲TRUE。否則,表達式評估爲FALSE。

你的邏輯測試很簡單:

iferror(vlookup(c2,$D:$D,1,false),"") 

也許應該是:

iferror(vlookup(c2,$D:$D,1,false),"") = "" 

得到式(與「國王的建議太):

"=IF(iferror(vlookup(c2,$D:$D,1,false),"""")="","",1)" 
+0

感謝您的幫助 – newjenn

0

我的第一替換認爲...在VBA中,你應該在你的公式中使用兩個「for each」...

另外,你是否想要使用IsError。

我將取代公式如下

.Range("d1").Formula = "=IF(iserror(vlookup(c2,$D:$D,1,false)),"""",1)" 

否則,請讓我們知道,你做了什麼錯誤。

+0

它不顯示錯誤,但我沒有得到一些單元格中的空白區域和一些單元格「1」沒有取代值 – newjenn