• 締切済み

順番をつける

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位と順番をつけたいのです。ご教示お願いします。

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

=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)) として以下下にコピー

karugamonooyako
質問者

お礼

ありがとうございます。難しそうですが、試してみます。

  • fandame
  • ベストアンサー率27% (23/84)
回答No.1

補足をいただけますか。セルがどのような状態になっているのか判断ができません。 たとえば、=SMALL(範囲,1)~=SMALL(範囲,5)で並び替えができるのはわかるのですが、順位(1位とか2位とか)がどこから出てきたのか分かりません。 それと、質問文が正しいのかもご確認ください。

karugamonooyako
質問者

補足

すみません。ややこしくかいてしましました。やりたいのはA君13秒、B君15秒 C君15秒をタイムの早い順番にならべたいのです。困るのは同タイムの場合、B君とC君の場合、1番目の15秒、2番目の15秒と判断できる関数があればA君13秒、B君15秒 C君15秒と順番に並べたいのです。よろしくお願いします

関連するQ&A