나는 다음 코드를 가지고 있습니다 :
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
.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
이 예에서는).