[[20050526140216]] 『順位を1から順に氏名とともに並べたい』(YUKI) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『順位を1から順に氏名とともに並べたい』(YUKI)

A    B    C  D  E  F  G  H   I   J  K  L   M

a@ 氏  名      上   期       小計  件数 点 総合点 順位

         4月 5月 6月 7月 8月 9月 (C~Hの計)    (I+Kの計)

1   ○ 氏   1  1  1  1  0  2  6    2  6  12   3

2   □ 氏   0  0  0  0  0  0  0    1  3   3   6

3   △ 氏   1  2  1  2  2  1  9    0  0   9   5

4   ◎ 氏   2  0  1  0  2  3  8    1  3  11   4

5   ◆ 氏   0  0  2  1  1  2  6    2  6  13   2

6   ☆ 氏   2  4  1  0  0  1  8    2  6  14   1

という表で氏名と順位を1位から順に並べるにはどうしたらよいでしょうか?教えてください><; 宜しくお願いします


データ 並べ替え より並べ替えを行えばよいのではないでしょうか?

データの範囲を指定し、タイトル行にチェックをつけて、順位で並べ替え

で出来ないでしょうか?(tokky)


tokkyさんへ

返信有難うございます!!

並べ替えを使ったら順番に並べることが出来ました!!

コレでやっと先に進めます(涙)

本当にありがとうございましたm(__)m (YUKI)


こんにちは。 昨日質問して答えていただいたんですが・・・・

他のやり方で出す方法はあるでしょうか??? 

今のシートとは別の場所に順位と氏名を出したいんですが、そういったことができる方法は

ありますか???  すみませんが教えて下さい><;   (YUKI)


 え〜っと、なかなかレスが付かんっちゅうことは、一般機能じゃ難しいということ
 でっしゃろか?
 ほんならいっぺんマクロで挑戦してみまっか?
 これって最終列にはすでにランキングが表示されとるんですわなぁ。
 でなくて、総合点でソートせなアカンのならちょっとマクロの中身を
 さわらなきゃ、変えなきゃ、きゃぁきゃぁでっせ。(笑
 それと、シートとは別の場所とありますけど、同じブックの別のシートっちゅう事
 ですわなぁ。
 まさか別のブックにというような贅沢な質問とちゃいまっしゃろ?
 あとひとつは、あんさんの文面から察するに順位と氏名だけ抽出すればええと解釈
 しましたけど、それでよろしゅうおまんねんなぁ。

 1)Alt+F11でVBEを開く
 2)「挿入」→「標準モジュール」を選択
 3)そのモジュールに下のコードをコピペ
 4)エクセルに戻る

 例えばあんさんが例示してくれた元データがsheet1のB列(氏名の入った列)からM列(順位が入った列まで)あるとしたら 別シートの任意のセルに(ソート済みのデータを
 抽出したいセル)yuki(sheet1!b3:m8)といった塩梅に入力してください。
 このばやいやとyuki(sheet1!b1:m8)と入力してもいけま。
 同じシートに抽出したかったらyuki(b1:m8)でもOKです。
 入力でけたらそのセルを(yuki(....)と書き込んだセル)をアクチブにしてAlt+F8
 を叩いて(キーボードが壊れない程度に)yukiを実行するだけです、ハイ。 
 まあいっぺん試してみておくんなはれ。
         (弥太郎)
 '---------------------------------
 Option Explicit
 '-----------------------------------
 Sub yuki()
    Dim data(1 To 2)
    Dim sht As String, tbl As String
    Dim row_cnt As Long
    Dim col_cnt As Integer, i As Integer
    Application.ScreenUpdating = False

    If Left(ActiveCell, 5) <> "yuki(" Then Exit Sub
    If ActiveCell Like "*!*" Then
        sht = Split(ActiveCell, "!")(0)
        sht = Split(sht, "(")(1)
        tbl = Mid(ActiveCell.Value, InStr(ActiveCell.Value, "!") + 1 _
                    , Len(Split(ActiveCell, "!")(1)) - 1)
    Else
        sht = ActiveSheet.Name
        tbl = Mid(ActiveCell.Value, InStr(ActiveCell.Value, "(") + 1 _
                    , Len(Split(ActiveCell, "(")(1)) - 1)
    End If
    With Worksheets(sht)
        row_cnt = Range(tbl).Rows.Count
        col_cnt = Range(tbl).Columns.Count
        For i = 1 To row_cnt
            If .Range(tbl).Cells(i, col_cnt) <> "" And IsNumeric(.Range(tbl).Cells(i, col_cnt)) Then
                row_cnt = row_cnt - i + 1
                Exit For
            End If
        Next i

        data(1) = .Range(tbl).Cells(1, 1).Offset(i - 1).Resize(row_cnt)
        data(2) = .Range(tbl).Cells(1, col_cnt).Offset(i - 1).Resize(row_cnt)
    End With
        ActiveSheet.Range(ActiveCell.Address).Resize(row_cnt) = data(1)
        ActiveSheet.Range(ActiveCell.Address).Offset(, 1).Resize(row_cnt) = data(2)

    Range(ActiveCell.Address).Resize(row_cnt, 2).Sort _
        key1:=Range(ActiveCell.Address).Offset(, 1), order1:=xlAscending, MatchCase:=False

    data(1) = Range(ActiveCell.Address).Resize(row_cnt)
    data(2) = Range(ActiveCell.Address).Offset(, 1).Resize(row_cnt)
    Range(ActiveCell.Address).Resize(row_cnt) = data(2)
    Range(ActiveCell.Address).Offset(, 1).Resize(row_cnt) = data(1)

    Application.ScreenUpdating = True
 End Sub

数式でやるとすれば(マクロは詳しくないので・・・・・)以下で可能と思います。 
VLOOKUP関数を使用します。 
具体的には、 
・sheet1(今あるシート)最左列に順位を表示させます。
 今ある列MをA列に移動(その後、邪魔なら列Aを非表示にする)。
・sheet2(順位順に表示させるシート)に以下を入力。
 A列に上から順位を入力(A1に"1"、A2に"2"、A3に"3"、以下同)
  セルB1;"=VLOOKUP(A1,sheet1!$A$1:$M$8,2,FALSE)"
  セルC1;"=VLOOKUP(A1,sheet1!$A$1:$M$8,3,FALSE)"
  以下同
 2行以下は、1行目をドラッグしてコピー。

これで表示されると思います。私でもお役にたてたでしょうか・・・・。(Kuro)


 同順位がある場合、No.の若い方が上に来るとすれば、順位にちょっと小細工します。
 例えば、N列にN3:=M3*100+A3 として、下へコピーしておきます。
 氏名の抽出は、
 Sheet2のB1:=INDEX(Sheet1!$B$3:$B$8,MATCH(SMALL(Sheet1!$N$3:$N$8,ROW(B1)),Sheet1!$N$3:$N$8,0))
 下方向へ人数分コピーします。
 順位はSheet2のA1:=INT(SMALL(Sheet1!$N$3:$N$8,ROW(A1))/100) として下方向へコピーします。
  (Hatch)

Hatchさん、確かに!同順位があることに気づきませんでした。(初心者のKuro)

 こんばんは! 
 >他のやり方で出す方法はあるでしょうか??? 
 エクセルのクエリ機能を使ってみてはどうでしょうか?
 先ず、元のデータを↓の様なデータベース形式にする必要がありますが
 簡単な手順を作ってみましたので、よかったら参考にしてください。
	氏名	4月	5月	6月	7月	8月	9月	小計	件数	点	総合点	順位
1	○氏	1	1	1	1	0	2	6	2	6	12	3
2	□氏	0	0	0	0	0	0	0	1	3	3	6
3	△氏	1	2	1	2	2	1	9	0	0	9	5
4	◎氏	2	0	1	0	2	3	8	1	3	11	4
5	◆氏	0	0	2	1	1	2	6	2	6	13	2
6	☆氏	2	4	1	0	0	1	8	2	6	14	1
http://www.geocities.jp/soulman_excel/sample/myquery.htm
(SoulMan)

こんにちは。お返事遅くなりました><;

弥太郎さん・kuroさん・Hatchさん 色々な方法教えて頂き有難うございますm(__)m

早速試してみようと思います。

マクロや関数はまだまだ初心者なもので解らないことがたくさんでありまして・・・

また質問することがあると思いますがまたご指導?宜しくお願いします!!(≧m≦;)

(YUKI) 


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.