나눔터  
  HOME > 나눔터 > 묻고답하기 > 엑셀
엑셀
엑셀에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내

작성자:  

 데이 (sjisji)

추천:  2
파일:     기록지.xlsx (21.2KB) 조회:  2286
제목:   경기기록 순위뽑기 질문드립니다.
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

 - 엑셀 버전(95,97,2000,xp,2003,2007): 2007

* 아래줄에 질문을 작성하세요 >>

현재 기록지 작성은

개별기록작성 -> 누적기록 계산 -> 평균기록 계산

으로 되어있습니다. 계속적으로 업데이트하는데 업데이트하는사람이

달라져서 엑셀을 모르는 인원이 작성하는 경우도있습니다.

그래서 순위를 자동으로 뽑게하고싶었습니다.



리그전체 순위를 뽑을때는

1. 전체1위기록자 이름 추출
{INDEX($A$4:$A$36,MATCH(LARGE(IF($B$4:$B$36>(MAX($B$4:$B$36)*0.6),$D$4:$D$36,FALSE),1),$D$4:$D$36,0))}

2. 이름의 해당하는 기록 추출(vlookup) 

으로 이루어져있습니다.


질문은
전체 1위 기록자의 기록을 추출할때 동률일시 발생하는문제입니다.
현재 전체게임수의 60% 이상 기록에 대해서 순위를 뽑는데
중복수치가 발생함에 따라 자꾸 잘못된 이름이 나옵니다.
어떻게 수정해야할까요??

또한 수식이 너무복잡해서 간단하게 할수있는게 있을까요?
 
[불량 게시물 신고]  
조삿갓각 리그별로 별도 열을 삽입해서 RANK를 계산하고
(LARGE 함수 교체, 내포된 IF는 RANK 함수와 결합시킴)
예) IF($B4>MAX($B$4:$B$36)*0.6,RANK(D4,D$4:D$36),0)

이렇게 설계하면 굳이 어려운 배열수식을 쓰지 않아도 될 것 같네요.

동점자에 대한 문제는 따로 동점 처리기준을 마련하여 RANK 함수에서 처리해 주지 않으면 먼저 발견된 1위의 이름이 추출되는 현상은 어쩔 수 없을 겁니다.

예를들어, 같은 승률일 때 게임 수가 많은 팀을 선순위로 정한다면, 리그별 승률 옆에 열을 하나 더 추가하고, 승률의 유효숫자가 소숫점 아래 첫째자리까지 계산함을 이용하여 다음과 같이 순위 기준을 정할 수 있습니다.
=ROUND(D4,1)+G4/1000
                  ^-- 최대 게임수가 99게임이라고 하면
                      소수 들째자리 이후로 게임수가 계산됨
그리고 이 값을 기준으로 RANK를 정하면 됩니다.
06-27 (21:49)
삭제 ■신고
조삿갓또 하나, 앞의 수식에서 MAX($B$4:$B$36)*0.6 기준값 계산은
그 열의 모든 셀에서 동일한 수식이 반복계산되기 때문에
예컨대 B1 셀에 이 값을 미리 계산해 두면
각 셀의 IF 조건식은 $B4>$B$1 으로 써 주면
수식도 간단해지고 수행 속도도 훨씬 빨라질 것입니다
06-27 (21:51)
삭제 ■신고
        
  

작성일 : 2017-06-27(15:19)
최종수정일 : 2017-06-27(15:23)