3. Find함수를 이용해 첫 번째 숫자의 위치 찾기(성공)
Find함수의 첫 번째 인수는 찾을 값인데, 배열로 지정할 수 있으므로
숫자를 배열에 넣어서
=find({0,1,2,3,4,5,6,7,8,9},a2)라고 하면
Microsoft 365의 경우는 아래와 같이 동적 배열로 반환됩니다.
다른 엑셀 버전은 7만 반환될 듯합니다.
위 반환값에서 7은 0의 위치, 9는 1의 위치이며, 세 번째부터는 에러가 발생하는데 해당하는 숫자가 없기 때문입니다.
에러가 나면 떠오르는 것이 Aggregate 함수입니다.
배열형인 경우 Aggregate 함수의 구문은
AGGREGATE(function_num, options, array, [k])이며,
두 번째 인수인 options에서 오류값을 무시하는 옵션을 지정할 수 있는데, 오류값을 무시하는 것은 2, 3, 6, 7이며, 이중 아무거나 사용하면 되지만 옵션이 넓은 3을 사용하겠습니다.
그리고 첫 번째 인수인 functions는 큰 값(Large), 작은 값(Small) 등을 구하는 함수 번호로 가장 작은 값인 첫 번째 위치를 구해야 하므로 Small함수에 해당하는 15를 지정합니다.
그리고, 네 번째 인수인 k는 순번을 지정하는 것으로 첫 번째이므로 1입니다.
따라서, 완성된 수식은
=aggregate(15,3, find({0,1,2,3,4,5,6,7,8,9},a2),1)
이 됩니다.
첫 번째 숫자의 위치인 7이 구해졌습니다.
이제 Mid와 Value함수를 이용해 숫자를 모두 가져오면 됩니다.
첫 번째 공백의 위치를 찾을 때는 숫자가 그다음에 나오므로 +1을 했는데,
이제 숫자의 위치를 찾았으므로 +1이 필요 없습니다.
D2셀의 채우기 핸들을 더블 클릭하니 모두 숫자가 제대로 구해졌습니다.
4. Find함수를 이용해 첫 번째와 마지막 숫자의 위치 찾기(성공)
참고로 마지막 숫자의 위치는 가장 큰 숫자이므로 15 대신 14를 사용하면 됩니다.
구해진 마지막 숫자의 위치는 9입니다.
따라서, 첫 번째 숫자의 위치와 마지막 숫자의 위치까지 숫자를 가져오는 것을 수식으로 표현하면 복잡하지만 아래와 같습니다.
=VALUE(MID(A2,AGGREGATE(15,3,FIND({0,1,2,3,4,5,6,7,8,9},A2),1),AGGREGATE(14,3,FIND({0,1,2,3,4,5,6,7,8,9},A2),1)-AGGREGATE(15,3,FIND({0,1,2,3,4,5,6,7,8,9},A2),1)+1))
수식에서 AGGREGATE(15,3,FIND({0,1,2,3,4,5,6,7,8,9},A2),1)는 시작위치로 동일하고,
가져올 숫자의 개수를 마지막 숫자위치 (function_num 14)에서 첫 번째 숫자 위치(function_num 15)를 빼는데 9-7을 하면 2이므로+1을 해서 3으로 바꿔야 합니다.
따라서, 수식이
AGGREGATE(14,3,FIND({0,1,2,3,4,5,6,7,8,9},A2),1)-AGGREGATE(15,3,FIND({0,1,2,3,4,5,6,7,8,9},A2),1)+1
이 된 것입니다.
마찬가지로 E2셀의 채우기 핸들을 더블 클릭하면 숫자만 잘 추출되었습니다.
'Excel' 카테고리의 다른 글
좌표와 일치하는 도면 번호 찾기(2) (0) | 2023.11.08 |
---|---|
좌표와 일치하는 도면 번호 찾기(1) (0) | 2023.11.07 |
문장에서 숫자만 추출하기(1) (2) | 2023.11.04 |
계산 오류 원인 2 - 날짜를 문자로 입력 (0) | 2023.11.01 |
계산 오류 원인 1 - 숫자를 문자로 입력 (0) | 2023.10.31 |