我有以下代码:
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
在此示例中)。