Excel

Cell의 속성을 알려주는 Cell 함수 (1)

별동산 2023. 4. 29. 10:35
반응형

1. 기능

참조 영역의 주소, 데이터 형식, 파일 등의 속성을 반환하는 함수로 단일 셀 또는 범위에 따라 반환하는 값이 다른 경우가 있습니다.

 

2. 구문

CELL(info_type, [reference])

 

가. info_type(정보 유형)

정보 유형 반환 값
"address" 참조 영역에 있는 첫째 셀(A1)의 참조를 텍스트로 반환합니다.
"col" 참조 영역에 있는 셀의 열 번호를 반환합니다.
"type" 셀의 데이터 형식에 해당하는 텍스트 값입니다. 셀이 비어 있는 경우 비어 있는 경우 "b"를 반환하고, 셀에 텍스트 상수가 포함된 경우 레이블의 경우 "l", 셀에 다른 것이 포함된 경우 값에 대해 "v"를 반환합니다.
"contents" 참조 영역에 있는 왼쪽 위 셀(범위인 경우 A1셀, 단일 셀인 경우 그 셀)의 수식이 아닌 값을 반환합니다.
"filename" 텍스트로 참조가 들어 있는 파일의 전체 경로를 포함한 파일 이름과 시트명을 반환합니다. 참조가 들어 있는 워크시트를 저장하지 않은 경우에는 빈 텍스트("""")를 반환합니다. 참고:이 값은 웹용 Excel, Excel Mobile 및 Excel starter에서는 지원되지 않습니다.
"format" 셀의 숫자 서식에 해당하는 텍스트 값입니다. 여러 숫자 서식에 대한 텍스트 값은 아래 표에 나와 있습니다. 음수에 대해 색으로 서식을 지정한 셀에 대해서는 텍스트 값의 끝에 ""-""를 반환합니다. 양수나 모든 값에 괄호로 서식을 지정한 셀에 대해서는 텍스트 값의 끝에 ""()""을 반환합니다. 참고:이 값은 웹용 Excel, Excel Mobile 및 Excel starter에서는 지원되지 않습니다.
"parentheses" 양수 또는 모든 값에 괄호로 서식을 지정한 셀에 대해서는 1을 반환하고, 그렇지 않은 셀에 대해서는 0을 반환합니다. 참고:이 값은 웹용 Excel, Excel Mobile 및 Excel starter에서는 지원되지 않습니다.
"prefix" 셀의 ""레이블 붙이기""에 해당하는 텍스트 값입니다. 셀에 왼쪽 맞춤 텍스트가 포함된 경우 단일 인용 표시(')를 반환합니다. 셀에 오른쪽 맞춤 텍스트가 있는 경우 두 배의 인용 표시("") 셀에 가운데 텍스트가 포함된 경우 캐러트(^) 셀에 채우기 정렬 텍스트가 포함된 경우 백스래시(\) 및 셀에 다른 텍스트가 포함된 경우 빈 텍스트("")를 반환합니다. 참고:이 값은 웹용 Excel, Excel Mobile 및 Excel starter에서는 지원되지 않습니다.
"protect" 셀이 잠겨 있지 않으면 0을 반환하고, 셀이 잠겨 있으면 1을 반환합니다. 참고:이 값은 웹용 Excel, Excel Mobile 및 Excel starter에서는 지원되지 않습니다.
"width" 2개 항목(열 너비와 열 너비 수정 여부)이 있는 배열을 반환합니다. 배열의 첫 번째 항목은 정수로 반올림된 셀의 열 너비입니다. 열 너비의 각 단위는 기본 글꼴 크기로 지정된 문자 한 개의 너비와 같습니다. 배열의 2차 항목은 부울 값으로, 열 너비가 기본값인 경우 TRUE 또는 사용자가 너비를 명시적으로 설정한 경우 FALSE입니다. 참고:이 값은 웹용 Excel, Excel Mobile 및 Excel starter에서는 지원되지 않습니다.

 

나. reference (참조)

단일 셀 또는 범위가 될 수 있습니다. 생략하면 계산 시 선택한 셀이 됩니다. 

 

 

3. 정보 유형별 적용 예

 

=cell(까지 입력하면 정보 유형이 나열되기 때문에 마우스로 더블 클릭해서 정보 유형을 쉽게 입력할 수 있습니다. 

 

다른 것은 모두 영어이고, 맨 아래 '종류'만 한글로 되어 있는데, 영어로는 'type'입니다.

 

 

가."address"

 

① 셀 주소를 입력한 경우

A2셀의 수식은 =CELL("address",A1)로서

A1셀의 주소를 반환해 달라는 것입니다. A1셀을 가리키면서 주소를 반환해 달라고 하니 좀 이상하죠?

 

② Offset 함수와 같이 사용하는 경우

Offset 함수의 구문은 OFFSET(reference, rows, cols, [height], [width])로서

Offset함수를 사용할 때는 주어진 참조 셀(reference)을 기준으로 몇 행과 몇 열을 이동하는지 계산해서 주소를 구해야 하는데,

 

 

=CELL("address",OFFSET(A1,2,3))라고 하면

A1셀을 기준으로 아래로 2칸, 오른쪽으로 3칸 이동한 셀의 주소를 반환하므로 $D$3이 됨을 쉽게 알 수 있습니다.

 

③ 참조 셀을 지정하지 않은 경우

B2셀의 수식은 =CELL("address")로서 셀 참조를 입력하지 않았기 때문에 

①번 캡처에서는 자기 셀인 $B$2였다가 ②번 캡처에서는 B3셀이 선택되어 처리됐기 때문에 $A$3으로 바뀐 것을 알 수 있습니다.

다시 말해 셀 주소를 기재하지 않으면 현재 처리된 셀의 셀 주소가 반환됩니다. 그러나, 단순히 셀을 옮겼다고 B2셀의 값이 바뀌지는 않습니다.

 

④ Address 함수와 비교

Cell함수의 "address" 정보 유형의 경우 항상 절대 참조 형식으로만 셀 주소를 반환하는데, Address함수의 경우는 절대 또는 상대 참조 형식을 선택할 수 있는 점이 다릅니다.

 

절대 참조 숫자로 4를 입력하면 행과 열이 모두 상대참조가 되므로 

=ADDRESS(2,3,4)의 결괏값은 C2가 됩니다.

 

⑤ 병합 셀의 경우

A2셀의 수식을 복사한 후 C2, D2, F2, G2셀에 붙여 넣으면

상대적인 위치에 따라 복사되므로 C, D, F열의 경우는 바로 윗 셀의 주소를 반환하므로 문제가 없는데

병합 셀의 경우는 커서로 이동하면 G1셀은 표시되지 않고 모두 F1이라고 표시되는데,

 

G2셀에 복사된 수식은 =CELL("address",G1)로서 G1셀의 주소를 구하는 것인데, 화면을 보면 F1셀이 반환될 것 같지만, F1이 아니라 G1이 반환되는 것을 알 수 있습니다.

 

⑥ 참조를 범위로 입력한 경우

㉮ 병합 셀이 아닌 경우

C3셀에 =CELL("address",C1:D2)라고 참조를 C1에서 D2라고 4칸을 선택해도 C1:D2가 반환되는 것이 아니라 맨 왼쪽 위 셀인 C1셀의 주소만 반환됩니다.

 

㉯ 병합 셀인 경우 1

G2셀에서 위 화살표키를 누르면 F1에서 G2셀까지 선택되므로 

 

G3셀에 =CELL("address",OFFSET(G2,-1,0))라고 입력하면 F1셀이 구해지지 않을까 생각했는데, 여전히 G1셀이 구해집니다.

 

따라서, 수식을 =CELL("address",OFFSET(G2,-1,-1))로 열 방향으로도 왼쪽으로 한 칸 이동하도록 -1로 입력해야 합니다.

 

 

㉰ 병합 셀인 경우 2

위와 같이 병합된 셀의 개수가 2개인 경우는 한 칸 이동하면 되는데, 병합된 셀의 개수가 많아지더라도 처리되도록 하려면

=CELL("address",IF(LEN(G1)>0,G1,IF(LEN(OFFSET(G2,-1,-1))>0,OFFSET(G2,-1,-1)))) 식으로 반복문이 없기 때문에 조건문을 연속적으로 입력해야 합니다.

 

위 수식의 의미는 g1셀의 길이가 0보다 크면 그 셀 주소가 되고, 아니면 다시 조건을 판단해서 왼쪽 셀의 길이가 0보다 크다면 왼쪽 셀 주소를 반환하는 것입니다.

 

병합된 셀이 5개까지 적용가능하도록 하려면 아래와 같이 수식이 엄청 복잡해집니다.

=CELL("address",IF(LEN(G1)>0,G1,IF(LEN(OFFSET(G2,-1,-1))>0,OFFSET(G2,-1,-1),IF(LEN(OFFSET(G2,-1,-2))>0,OFFSET(G2,-1,-2),IF(LEN(OFFSET(G2,-1,-3))>0,OFFSET(G2,-1,-3),IF(LEN(OFFSET(G2,-1,-4))>0,OFFSET(G2,-1,-4)))))))

그렇지만 논리는 셀에 값이 있으면 그 셀 주소로 한다는 의미로 간단합니다.

 

그러나, Offset 함수를 입력하지 않고 직접 셀 주소를 입력하면 

=CELL("address",IF(LEN(G1)>0,G1,IF(LEN(F1)>0,F1,IF(LEN(E1)>0,E1,IF(LEN(D1)>0,D3,IF(LEN(C1)>0,C1))))))가 되는데,

 

수식은 간단하지만 B4셀에 붙여 넣으면 값은 A1셀 맞지만, A1셀 왼쪽에 셀이 없으므로 수식에 #REF! 에러가 계속 발생하므로 적절하지 않습니다.

 

G3셀의 수식을 D3셀에 붙여 넣으면 #REF! 에러 없이 값 D1이 잘 구해집니다.

 

cell함수 사용 예1.xlsx
0.01MB

반응형