- 締切済み
順番をつける
12秒 13秒 14秒⇒これを出力先のセルに=SMALL(範囲,1)~=SMALL(範囲,5)の式をいれておけば、1位=12秒、2位=13秒 3位=14秒と並べ替えるとができますが、12秒 15秒 15秒だと1位=12秒 2位=15秒 2位=15秒となってしまいます。しかし同タイムの場合でも1番目の15秒は2位、2番目の15秒、3番目の15秒は3位と順番をつけたいのです。ご教示お願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
=SMALL(範囲,順位) で順位に応じた秒の取り出しはできていると思うので、 要点は、同じ値が含まれた表からそれぞれの値(この場合名前)をVLOOKUP するというような意味ですね。 通常関数では、ちょっと難しく思えるので、 ユーザー定義関数を作ってみました。 ---------------------------------------------------------------- Function VlookupDup(検索値, 範囲 As Range, 列, seq) Dim i, j For i = 1 To 範囲.Rows.Count For j = 1 To 範囲.Columns.Count If 範囲.Cells(i, j) = 検索値 Then seq = seq - 1 If seq = 0 Then VlookupDup = 範囲.Cells(i, j + 列 - 1) Exit Function End If End If Next j Next i VlookupDup = CVErr(xlErrNA) End Function ---------------------------------------------------------------- 使い方: 秒 名前 15 A 12 B 15 C 14 D 16 E の様な表がある時 =VlookupDup(検索値, 範囲, 列, 位置) 表がA1から始まる時 =VlookupDup(15,$A$1:$B$5,2,2) 位置で指定したで2つめの検索値15 に該当する2列目の値"C" がとり出されます。 C列に =SMALL(範囲,1) =SMALL(範囲,2) =SMALL(範囲,3) =SMALL(範囲,4) =SMALL(範囲,5) の様にある時D列に名前を求めるには D1 =VlookupDup(C1,$A$1:$B$5,2,COUNTIF($C$1:C1,C1)) として以下下にコピー
- fandame
- ベストアンサー率27% (23/84)
補足をいただけますか。セルがどのような状態になっているのか判断ができません。 たとえば、=SMALL(範囲,1)~=SMALL(範囲,5)で並び替えができるのはわかるのですが、順位(1位とか2位とか)がどこから出てきたのか分かりません。 それと、質問文が正しいのかもご確認ください。
補足
すみません。ややこしくかいてしましました。やりたいのはA君13秒、B君15秒 C君15秒をタイムの早い順番にならべたいのです。困るのは同タイムの場合、B君とC君の場合、1番目の15秒、2番目の15秒と判断できる関数があればA君13秒、B君15秒 C君15秒と順番に並べたいのです。よろしくお願いします
お礼
ありがとうございます。難しそうですが、試してみます。