rand(life)

[함수] 반복빈도수 순위에 따른 문자열 찾기 본문

컴퓨터/엑셀

[함수] 반복빈도수 순위에 따른 문자열 찾기

flogsta 2017. 7. 16. 16:22


A열과 같이 같은 문자열이 반복되어 나오고 있을때, 가장 많이 나오는 문자열이 무엇인지, 또는 두 번째로 많이 나오는 문자열이 무엇인지를 알 수 있는 함수입니다.

=INDEX(A1:A6,MATCH(LARGE(FREQUENCY(MATCH(A1:A6,A1:A6,0),MATCH(A1:A6,A1:A6,0)),C1),FREQUENCY(MATCH(A1:A6,A1:A6,0),MATCH(A1:A6,A1:A6,0)),0))

배열함수이므로, Ctrl-Shift-Enter해야합니다.


길어서 복잡해보이지만,

FREQUENCY(MATCH(A1:A6,A1:A6,0),MATCH(A1:A6,A1:A6,0))


이 부분이 반복되어서 그런것입니다. 이 부분이 하는 역할은, A열의 각 문자열이 나오는 횟수를 배열로 만드는 것입니다.


MATCH(A1:A6,A1:A6,0)에 의해 {1;2;2;1;5;2} 라는 배열이 두 개 만들어지고, 그 두 배열을 Frequency함수로 받으면

FREQUENCY({1;2;2;1;5;2},{1;2;2;1;5;2}) 가 되어, {2;3;0;0;1;0;0}이라는 결과가 만들어집니다.


({1;2;2;1;5;2}안에서 1은 두번 나오고, 2는 3번 나오고, 5는 1번 나오므로)

C1의 값이 2라면 Large(~~~, 2)가 되어 위의 배열에서 두번째로 큰 값을 찾으면 2입니다.


다시 FREQUENCY(MATCH(A1:A6,A1:A6,0),MATCH(A1:A6,A1:A6,0))를 하면

다시 {2;3;0;0;1;0;0}라는 배열이 나오는데,


거기서 위에서 찾은 2라는 값이 어디있는지를 Match함수에서 찾으면 1이 되고

A1:A6에서 1의 위치에 있는 것은 '사과'입니다.


짐작하시겟지만, 동률순위가 있을 때는 제대로 답이 나오지 않습니다.