어찌어찌하다가 셀에 전각 문자가 섞여 있는 경우 데이터로 처리할 때는 일반적인 반각 문자가 아니라서 오류의 원인이 되기도 한다. 데이터량이 많아지면 하나씩 찾아내는 것도 일이라서 눈으로 봤을 때 셀에 표시라도 되면 수정할 것인지 아닌지를 정하는데 도움이 된다. 하지만 전각문자를 찾는 함수가 없다.
결과적으로 조합된 조건부서식 함수는  =NOT(EXACT(시작셀), ASC(시작셀)))

전각 문자가 있다는 것을 알아내기 위한 고민. 함수가 그냥 있으면 되자나!!

전각 문자가 있는지 알아내는 방법

전각문자가 있는지 찾아내는 함수는 아쉽게도 없는 것 같다 (...있나?).
하지만 셀 내용을 반각 문자로 바꿔주는 ASC라는 함수는 있어서 이 함수를 이용할 방법을 고민고민. 

ASC 함수로 모든 셀을 다 반각으로 바꾸면 되지 않나?... 싶지만, 그냥 바꾸면 안 되는 경우이거나 해당 셀을 알아내는 것만 필요한 경우에는 셀의 색이라도 변하게 해서 작업자가 알려줘야 한다. 이 경우를 고민하다가...

우리는 보통 반각 문자를 사용한다. 만약 셀에 전각 문자가 섞여있다면 반각 문자로 바꿔서 바꾸기 전의 원래값과 비교했을 때 서로 다를 것이다.

1.셀의 원래값 2.셀 내용을 반각문자로 바꾼값 3.둘이 일치하는지 비교
반각문자 반각문자 같음 = 반각문자, 반각문자 
일부/전체 전각문자 반각문자 다름 = 일부/전체 전각문자, 반각문자

즉, 셀의 내용을 반각 문자로 바꿨는데 바꾸기 전과 비교해 보니 다를 경우 전각 문자가 해당 셀에 섞여 있다는 뜻이 된다.
이 방법을 사용하기 위해 반각 문자로 바꿔주는 것은 ASC, 비교하는 것은 EXACT 함수를 조합한다.

 

전각 문자를 반각 문자로 바꾸는 함수: ASC

윗 줄의 두 함수는 기본 역할이 다음과 같다.

  • ASC(셀 위치값) = 해당 셀의 내용을 반각 문자로 변환한다.
  • EXACT(A, B) = A와 B가 같으면 True, 다르면 false 값을 반환한다.
    • 예) EXACT(5, 5)의 결과는 true
    • 예) EXACT(2, 3)의 결과는 false
  1. 예) 현재값: A1.
  2. ASC(A1): 현재값 A1을 반각 문자로 바꾸기.
  3. EXACT(A1, ASC(A1)): 둘을 비교하기.

3번 함수의 결과는 1.과 2.를 비교해서 반각 문자로만 구성되었다면 True가 된다. 반대로 전각 문자가 섞여 있다면 false가 나온다.
'전각 문자가 있다면' 셀의 색을 바꿔라! 가 되어야 하므로 전각 문자가 있는 경우를 True로 바꾸기 위해 NOT으로 결과를 뒤집어 준다. 
그러면 필요한 함수는 아래처럼 되어야 한다.

  • NOT(EXACT(A1, ASC(A1)))

 이 함수를 조건부 서식(conditional formatting) > 사용자 지정 (custom formula is)에서 범위를 지정하고, 수식 부분에 넣고 색상을 지정해 주면 된다.

범위는 D4부터 X컬럼 전체로 설정한 경우의 모습.

 

반응형

스프레드 시트 작업을 하다 보면 vlookup 함수를 쓴다거나 해서 셀의 결과가 #N/A로 나오는 경우가 있다(#N/A는 Not Availale). 계산이 불가능하다는 뜻인데, 무엇인가 문제가 있기 때문에 해당 원인을 찾아 수정해야 한다. 하지만 문서 내에서 셀의 범위가 엄청 넓거나 많다면 저런 셀을 빠짐없이 찾는 것도 어려울 수 있다.

2가지 방법으로 N/A 셀에 색을 칠하기

이럴 때 #N/A값이 있는 셀을 찾기 위해서 해당 셀을 강조하는 방법은 2가지 정도.

1. 사용자 규칙으로 직접 저 경우에 대응하는 함수를 사용하기 (isna).
2. 기본색을 문제가 있는 색상을 다 칠해놓고, 값이 정상적으로 나오는 경우를 일반적인 흰색으로 칠해서 오류가 있는 셀을 강조하기.

1. isna 함수 사용하기

사용자 규칙으로 사용할 함수는 isna. 이 함수는 말 그대로  셀 내용이 #N/A 일 때를 감지하는 함수.
셀값이(is) 처리 불가능(na)? = isna  ← 이런 느낌.

적용 순서는 다음과 같다.

1.  해당 셀 범위 선택,
2. 셀 우클릭으로 셀 서식 메뉴(Conditional Formatting) 선택,
3. 사용자 규칙(Custom Formula is)을 선택하고,
4. =isna(시작 셀 번호값) 입력.

그리고 원하는 배경색이나 글씨색을 골라준다.

이런 식으로 범위, isna 함수, 셀 색상 설정

위의 그림의 경우 열(culumn) J3~M 끝까지에 해당하는 셀 범위를 지정했다 (행이 50500까지 있었다니... 어쩐지 버벅거리더라).

작업 중이던 내용에서 제목 같은 것을 뺀 실제 값이 J3부터 시작하기 때문에 적용될 전체 범위와 함수 안의 넣어준 범위값이 J3으로 시작하고 있다.
isna 함수 안에는 J3:M3 이 들어가 있는데 시작 위치를 지정한 것으로 보면 된다. J3~M3 값들을 시작으로 가장 위의  Apply to range에 설정된 전체 범위 모두에 저 함수 내용을 적용하게 된다.

#N/A 셀에 지정된 바탕색이 칠해진 모습

저~ 위의 그림처럼('이런 식으로 설정') 설정하고 나면 #N/A 값이 있는 경우 바로 위 그림처럼 보이게 된다. isna 대신에 iserror를 사용해도 같은 결과를 볼 수 있다. 

2. 값이 있는 셀을 바꾸기 (is not empty 활용)

이것은 약간 우회하는 방법인데 #N/A은 셀의 내용이 비어있는 것으로 간주되는 특성을 이용한다.
하지만 직접 '비어 있는 셀(Is empty)'을 조건으로 선택하면 #N/A이라는 내용이 보여서 그런지 비어있는 셀에 해당하지 않는 것처럼 된다.

(으음? 뭔가 이상한데...)

그래서 반대로 생각해서 정상적인 값이 있는 셀을 기본적인 흰색으로 칠하게 하는 방법이다.

1. 정상적인 값이 나와야 하는 모든 범위의 셀에 '에러가 났을 때 강조하고 싶은 색'으로 먼저 다 채워 놓는다.
2. 그런 후에 해당 범위에 대한 셀 서식에서 '값이 비어 있지 않은 경우(Is not empty)' 선택 > 셀 색을 흰색을 칠하게 한다.

이렇게 되면 #N/A이 있는 셀은 비어 있기 때문에 강조하고 싶은 색이 그대로 남아있게 되고, 정상적인 값들이 나온 셀들은 '값이 비어있지 않은 경우'에 해당되니까 흰색으로 채워지게 된다. 결과적으로 눈으로 보기에는 #N/A이 있는 셀만 강조된 것처럼 보이게 된다.


1번이 좀 더 간단하고 수정할 때 손이 덜 가기 때문에 1번 방법을 애용 중!

반응형

+ Recent posts