IFNA(또는 ISNA)가 VBA 모듈에서 작동하지 않는 이유는 무엇입니까?

IFNA(또는 ISNA)가 VBA 모듈에서 작동하지 않는 이유는 무엇입니까?

나는 다음 코드를 가지고 있습니다 :

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이 예에서는).

관련 정보