У меня есть следующий код:
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")
Мне нужно поместить слово «удалить» в ячейку E6, если D6 — #NA.
может ли кто-нибудь помочь мне с этим кодом?
решение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
в этом примере).