我有以下程式碼:
Sub TestNA2()
IsThisNA = Sheets("sheet1").Range("D:D").Select
'Sheets("sheet1").Range("E:E").Select
Range("E2").Formula = "=IF(ISNA(D1),""Delete"","""")"
Range("E2").AutoFill Destination:=Range("E:E"), Type:=xlFillDefault
'ActiveCell.Value = "=IF(ISNA(D:D), ""Delete"","""")"
'ActiveCell.Value = IsThisNA
'MsgBox IsNA
End Sub
但在這一行出錯: ActiveCell.Value = IfNa(D6, "Delete")
我想要發生的事情是,如果 D6 是#NA,則將“刪除”一詞放入單元格 E6 中。
有人可以幫我解決這個代碼嗎?
答案1
錯誤在這一行:
ActiveCell.Value = IfNa(D6, "Delete")
改用:
Set IsThisNA = Sheets("items-1").Range("D6")
If Application.WorksheetFunction.IsNA(IsThisNA.Value) Then
ActiveCell.Value = "Delete"
End If
或者,更簡潔地說:
If Application.WorksheetFunction.IsNA(Sheets("items-1").Range("D6").Value) Then
ActiveCell.Value = "Delete"
End If
答案2
您應該從公式中建立一個字串。你有:
ActiveCell.Value = IfNa(D6, "Delete")
但這應該是:
ActiveCell.Formula = "=IF(ISNA(D6), ""Delete"","""")"
請注意,我將 的第二個參數新增IF
為空字串,但您可能想要變更它。
注意:您可以使用IFNA
自 Excel 2011 起取代IF(ISNA(..),..)
.
編輯:基於這個答案您可以將其擴展到整個列:
Range("E1").Formula = "=IF(ISNA(D1),""Delete"","""")"
Range("E1").AutoFill Destination:=Range("E:E"), Type:=xlFillDefault
您也可以設定固定範圍,例如E1:E6
,如中所示這裡。
編輯2:如果要填入整列,則應將公式放在第 1 行(例如E1
),然後對整列進行自動填入(例如E:E
)。如果您想要更少的行,您應該在自動填充目標中指出,例如:
Range("E2").Formula = "=IF(ISNA(D6),""Delete"","""")"
Range("E2").AutoFill Destination:=Range("E2:E10"), Type:=xlFillDefault
因此,自動填充範圍的起始位置與公式相同(E2
在本例中)。