Excel

문장에서 숫자만 추출하기(2)

별동산 2023. 11. 6. 09:36
반응형

숫자 추출하기(완성).xlsx
0.01MB

 

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셀의 채우기 핸들을 더블 클릭하면 숫자만 잘 추출되었습니다.

반응형