• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルで現在ランキング表を作成しています。)

エクセルで現在ランキング表を作成しています

このQ&Aのポイント
  • エクセルで現在ランキング表を作成する方法について教えてください。
  • ランキング表を作成するために、数値と文字列の関連付けを行いたいです。
  • 文字列を関連付けて並び替える方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.6

回答番号:ANo.3,4です。 >数値が同じ箇所でどうしても文字列も同じく重複してしまいます。  重複する数字が在るのでしたら、面倒な事になりますが、入力されている数値が整数に限られている場合には、作業列を使用した方法があります。  今仮に、Sheet3のA列~C列を作業列として使用するものとします。  まず、Sheet3のA1セルに次の数式を入力して下さい。 =IF(ROWS($1:1)>ROWS(シート1!$A$1:$C$3)*COLUMNS(シート1!$A$1:$C$3),"",OFFSET(シート1!$A$1,INT((ROWS($1:1)-1)/COLUMNS(シート1!$A$1:$C$3)),MOD(ROWS($1:1)-1,COLUMNS(シート1!$A$1:$C$3))))  次に、Sheet3のB1セルに次の数式を入力して下さい。 =IF($A1="","",$A1+COUNTIF($A$1:$A1,$A1)/COUNTIF($A:$A,$A1))  次に、Sheet3のC1セルに次の数式を入力して下さい。 =IF(ROWS($1:1)>ROWS(シート1!$A$1:$C$3)*COLUMNS(シート1!$A$1:$C$3),"",OFFSET(シート1!$D$1,INT((ROWS($1:1)-1)/COLUMNS(シート1!$A$1:$C$3)),MOD(ROWS($1:1)-1,COLUMNS(シート1!$A$1:$C$3))))  そして、Sheet3のA1~C1の範囲をコピーして、同じ列の2行目以下に、リスト中の数字が入力されているセルの個数を上回るのに充分な回数になるまで、貼り付けて下さい。  次に、シート1のA1セルとB1セルには、ANo.4と同じ数式を入力して下さい。  次に、シート1のC1セルに次の数式を入力して下さい。 =IF($A1="","",VLOOKUP(LARGE(Sheet3!$B:$B,ROWS($1:1)),Sheet3!$B:$C,2,0))  そして、シート2のA1~C1の範囲をコピーして、シート2のA2~C9の範囲に貼り付けて下さい。  以上です。

siasiascythe
質問者

お礼

ありがとうございました。お蔭様でランキング表ができあがりました。 並び替えと取得した数値にCOUNTIFで数値を足して差異をつけるわけですね。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (6)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.7

回答No2です。 分かりやすくするには作業列を作って対応することでしょう。 シート1のG1セルには次の式を入力して下方にオートフィルドラッグします。 =IF(ROW(A1)>9,"",INDEX($A$1:$C$3,ROUNDUP(ROW(A1)/3,0),MOD(ROW(A1)-1,3)+1)) H1セルには次の式を入力して下方にオートフィルドラッグします。 =IF(G1="","",RANK(G1,G$1:G$9)-COUNTIF(G$1:G1,G1)/100) I1セルには次の式を入力して下方にオートフィルドラッグします。 =IF(ROW(A1)>9,"",INDEX($D$1:$F$3,ROUNDUP(ROW(A1)/3,0),MOD(ROW(A1)-1,3)+1)) シート2では次のようにします。 A1セルには次の式を入力して下方にオートフィルドラッグします。 =IF(ROW(A1)>9,"",ROUNDUP(SMALL(Sheet1!H$1:H$9,ROW(A1)),0)) B1セルには次の式を入力して下方にオートフィルドラッグします。 =IF(ROW(A1)>9,"",INDEX(Sheet1!G$1:G$9,MATCH(SMALL(Sheet1!H$1:H$9,ROW(A1)),Sheet1!H$1:H$9,0))) C1セルには次の式を入力して下方にオートフィルドラッグします。 =IF(ROW(A1)>9,"",INDEX(Sheet1!I$1:I$9,MATCH(SMALL(Sheet1!H$1:H$9,ROW(A1)),Sheet1!H$1:H$9,0)))

全文を見る
すると、全ての回答が全文表示されます。
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.5

Sheet1のA列からC列の数字データ範囲に「数字」という名前を付けておきます(もちろん絶対参照でもOKです)。 数字の重複がなければ以下のような数式をシート1に入力し下方向にオートフィルします。 A1セル =RANK(B1,数字) B1セル =LARGE(数字,ROW(A1)) C1セル =INDEX(Sheet1!D:F,SUMPRODUCT((数字=B1)*ROW(数字)),SUMPRODUCT((数字=B1)*COLUMN(数字)))

siasiascythe
質問者

お礼

数字の重複があることを伝え忘れていました。

全文を見る
すると、全ての回答が全文表示されます。
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

 回答番号:ANo.3です。  先程の回答に関してですが、シート1のA1~C3の範囲に空欄等が存在した場合に対処するために、先程の回答中の数式を以下の様に変更して下さい。 シート1のA1セルの数式 =IF(ROWS($1:1)>COUNT(シート1!$A$1:$C$3),"",ROWS($1:1)) シート1のB1セルの数式 =IF($A1="","",LARGE(シート1!$A$1:$C$3,$A1) ) シート1のC1セルの数式 =IF($A1="","",INDEX(シート1!$D$1:$F$3,SUMPRDUCT((シート1!$A$1:$C$3=$B1)*ROW(シート1!$A$1:$C$3))-ROW(シート1!$A$1)+1,SUMPRDUCT((シート1!$A$1:$C$3=$B1)*COLUMN(シート1!$A$1:$C$3))-COLUMN(シート1!$A$1)+1))

siasiascythe
質問者

お礼

ありがとうございました。 すっぽりと答えに当てはまりました。

siasiascythe
質問者

補足

答えに当てはまったと思ったのですが、数値が同じ箇所でどうしても文字列も同じく重複してしまいます。

全文を見る
すると、全ての回答が全文表示されます。
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 まず、シート1!A1セル~C3セルの書式設定の表示形式が文字列になっていない事を確認して下さい。  そして、もし、書式設定が文字列となっていた場合には、シート1!A1~C3の範囲のセルの書式設定の表示形式を、 「分類」欄が ユーザー定義 「種類」欄が 00 となる様に変更した上で、数値の入力をやり直して下さい。(入力をやり直す方法は、各セルを順番にダブルクリックして行くだけです)  次に、シート2のA1セルに次の数式を入力して下さい。 =ROWS($1:1)  次に、シート2のB1セルに次の数式を入力して下さい。 =LARGE(シート1!$A$1:$C$3,$A1)  次に、シート2のC1セルに次の数式を入力して下さい。 =INDEX(シート1!$D$1:$F$3,SUMPRDUCT((シート1!$A$1:$C$3=$B1)*ROW(シート1!$A$1:$C$3))-ROW(シート1!$A$1)+1,SUMPRDUCT((シート1!$A$1:$C$3=$B1)*COLUMN(シート1!$A$1:$C$3))-COLUMN(シート1!$A$1)+1)  そして、シート2のA1~C1の範囲をコピーして、シート2のA2~C9の範囲に貼り付けて下さい。  以上です。

siasiascythe
質問者

お礼

申し訳ありません数値が重複するところで文字列がどうしてもかぶってしまいます。

全文を見る
すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

シート1のA1セルからC3セルには同じ数値が無いことが必要です。シート2のA1セルには次の式を入力してC1セルまでオートフィルドラッグコピーしたのちに下方にもオートフィルドラッグします。 =IF(OR(ROW(A1)>9,COLUMN(A1)>3),"",IF(COLUMN(A1)=1,ROW(A1),IF(COLUMN(A1)=2,LARGE(Sheet1!$A$1:$C$3,ROW(A1)),IF(COLUMN(A1)=3,INDEX(Sheet1!$D$1:$F$3,IF(COUNTIF(Sheet1!$A$1:$A$3,$B1)>0,MATCH($B1,Sheet1!$A$1:$A$3,0),IF(COUNTIF(Sheet1!$B$1:$B$3,$B1)>0,MATCH($B1,Sheet1!$B$1:$B$3,0),MATCH($B1,Sheet1!$C$1:$C$3,0))),IF(COUNTIF(Sheet1!$A$1:$C$1,$B1)>0,MATCH($B1,Sheet1!$A$1:$C$1,0),IF(COUNTIF(Sheet1!$A$2:$C$2,$B1)>0,MATCH($B1,Sheet1!$A$2:$C$2,0),MATCH($B1,Sheet1!$A$3:$C$3,0))))))))

siasiascythe
質問者

お礼

すいません 同じ数値が入ることもあるのです。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

ダブりがないことを前提にして I1セル =LARGE($A$1:$C$3,$H1) J1セル =INDEX($D$1:$F$3, SUMPRODUCT(($I1=$A$1:$C$3)*ROW($A$1:$A$3)), SUMPRODUCT(($I1=$A$1:$C$3)*COLUMN($A$1:$C$1))) I1:J1セルを下へオートフィル H:J列を切り取ってSheet2へ貼り付け

siasiascythe
質問者

お礼

数値のダブりはあるんです 申し訳ありません。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルでスコアランキング表作成について

    エクセルに関する質問です。 エクセルでスコアランキングを作成したいと考えております。 ゲームのスコアを入力していき、自動で順位順に並び替え、 パワーポイントにリンクで自動表示という流れを作りたいと考えております。 (1)入力sheet A列:順位 RANK関数(D列のスコアで順位) B列:参加者NO(固定001~) C列:ニックネーム(任意) D列:スコア 3-4桁の数値 (2)順位表sheet A列:順位 1~50 B列~D列→A列と入力sheetのA列を検索値として、参加者NO、ニックネーム、スコアを順位順に表示 という二つのsheetをつくっております。 スコアが同値で同じ順位が複数発生した際に、順位表sheetでN/Aになってしまいます。 同じスコアだった場合に、順位表に 4位、5位、5位、7位というように表示し、 同順位の人を表示する方法(vlookupですと、上の行しか読み込まれず・・・)が ありましたらご教示いただけないでしょうか? 御確認の程、よろしくお願いします。

  • EXCELでランキング表の作成

    Excelでランキング表を作成したいと思いますが シート1に、以下の表があるとします A列(地点名) B列(標高) ・・・ M列(時分) N列(気温) A地点      500       5時     +1.2 B地点      550       6時     -0.8 C地点      600       6時     -1.2 D地点      530       5時     -0.8 シート2に、気温(N列)の低い順に並べ替えを行って N列(気温) A列(地点名) B列(標高) ・・・ M列(時分)  -1.2      C地点      600       6時      -0.8      B地点      550       6時      -0.8      D地点      530       5時      +1.2      A地点      500       5時      という表を作成したいと思います。 VBAを使わずに、通常の関数のみで作成するためには どのような手法がありますでしょうか? また、「ツール」-「並べ替え」等も使用したくありません。 わがままな質問ですが、御教授よろしくお願い致します

  • エクセルでランキング表を作る

    エクセルでランキング表を作りたいのですが方法がわからないので どなたかご教授お願いします。 自分がやりたいのはランキング表用のエクセルファイル(以下A)で いくつかのエクセルファイル(以下B・C・D)を参照(リンク貼り付け)し その数値をランキングのように表示したいと思っています。 B・C・Dのファイルは毎日数値がかわります。 ですのでAは毎日他ファイルを参照し中身が更新されます。 Aに表示されるランキングは1位から順番に表示したいです。 (Bが1番数値がよければBが1番上になり、2番なら2番目の位置になる) 詳しく解説されているサイト等でもよいのでお願い致します。

  • Excel2010 ワーストランキングの作り方

    Excel2010を使用しています。 売上のワーストランキングを作りたいのですが、作り方がわからず困っています。 普通のランキングは作ることができたのですが、ワーストランキングの作り方がわかりません。     A    B    C   D   E   F  1 日付  時間  商品 売価 減価 利益  2 01/10 10:20  ○   100  60   40  3 01/11 10:25  ×   200  140   60  4 01/12 10:21  △   150  50   100  5 01/14 11:00  □   250  190   60  ・  ・  ・ 300 シート1にこのような表があります。 そして別のシートに     A    B    C   D   E   F  1          利益ベスト5  2 順位  日付  商品 利益  3  1   01/12  △  100      4  2   01/11  ×   60  5  2   01/14  □   60  6  3   01/10  ○   40 これはネットで検索して ランキングのシートのA3~A6には =IF(シート1!$F$2="","",IF(RANK(LARGE(シート1!$F$2:$F$300,ROW(A1)),シート1!$F$2:$F$300)>5,"",RANK(LARGE(シート1!$F$2:$F$300,ROW(A1)),シート1!$F$2:$F$300))) と入れたら順位を自動で表示できるようになり、 B3~B6には =IF($A$3="","",INDEX(シート1!$A:$A,1000-LARGE(INDEX((LARGE(シート1$D$3:$D$300,ROW(A1))=シート1$D$3:$D$300)*1000-ROW(シート1$D$3:$D$300),0),COUNTIF($B3:$B3,$B3)))) と入れたら日付が表示されるようになりました。 C列、D列もB列の =IF($A$3="","",INDEX(シート1!$A:$A,1000-・・・ のAをCとFに変えることで商品・利益が表示されるようになりました。 そこでこれのワーストランキングを作りたくてLARGEをSMALLに変えればできるのかと 思っていましたができませんでした。 正直上の関数も完全には理解できていません。 ネットで探しても自分のやりたいことにあう記事がなく質問することにしました。 Excel初心者で説明も下手ですが、よろしければお願いします。 自分の作りたいのは下のようなものです。     A    B    C   D   E   F  1          ワースト5  2 順位  日付  商品 利益  3  1   01/10  ○   40  4  2   01/14  □   60  5  2   01/11  ×   60  6  3   01/12  △   100 よろしくお願いします。      

  • ランキングの表を作りたいのですが教えてください。

    みなさん こんばんは。 ランキングの表を作りたいのですが教えてください。 下記のように A1からA5にURLを入力して B1からB5にAmazon.co.jp 売上ランキングを表示したいのですが 可能でしょうか。 (A5はランキング外なので「なし」です。) A1 http://www.amazon.co.jp/exec/obidos/ASIN/B00005GLEI/qid%3D1107577925/sr%3D1-57/ref%3Dsr%5F1%5F2%5F57/249-7112396-7896364 A2 http://www.amazon.co.jp/exec/obidos/ASIN/B00005HFH1/qid%3D1107577805/sr%3D1-11/ref%3Dsr%5F1%5F2%5F11/249-7112396-7896364 A3 http://www.amazon.co.jp/exec/obidos/ASIN/B00005HFH2/qid%3D1107577805/sr%3D1-20/ref%3Dsr%5F1%5F2%5F20/249-7112396-7896364 A4 http://www.amazon.co.jp/exec/obidos/ASIN/B00005HIRR/qid%3D1107577825/sr%3D1-21/ref%3Dsr%5F1%5F2%5F21/249-7112396-7896364 A5 http://www.amazon.co.jp/exec/obidos/ASIN/B00005HFGW/qid%3D1107578001/sr%3D1-97/ref%3Dsr%5F1%5F2%5F97/249-7112396-7896364 Amazon.co.jp 売上ランキング {現在のランキング) B1 112421 B2 6102 B3 51931 B4 23072 B5 なし よろしく御願いいたします。

  • EXCELのデータベース利用について(VBA)

    VBA初心者の者です。 下記の様なEXCELファイルを作りたいのですが、どのようにすれば良いのか まったくわかりません。 ACCESSでの構築が簡単なのかもしれませんが、データ量がそれほど多くないことと 職場にACCESSがないため、可能であればEXCELで構築したいと考えています。 私自身、プログラムの知識がなく、EXCEL VBAのサイトを確認するのですが、いまいち どうすれば良いのかわかりません。 ぜひご教授の程よろしくお願いします。 3つのシートの構成は以下になります。 【入力シート】 A1セルに文字列(A~Z)入力欄 【○○データシート】 A列に A~Z の文字列 B列に 001~100までの数値 C列に 001~100までの数値 D列に 001~100までの数値 E列に 001~100までの数値 例)    A列   B列   C列   D列   E列 1   A   001 2   B   001    002    003   004 3   C   003 4   D   002    003 【▽コマンドシート】 A列に 001~100までの一意の数字 B列に 文字列(コマンド) C列に 文字列(コマンド詳細) 例)    A列    B列    C列 1   001   xx     blank 2   002   xxx△   xxx 3   003   xxxx    x○ 4   004   xxxxx   xxx 【欲しいVBA】 1、入力シートのA1セルに○○データシートのA列に該当するA~Zの 文字列を入力。 2、○○データシートのB列~F列までの数値を参照 3、2の数値において▽コマンドシートのA列に記載ある番号と紐づけを行い、 ▽コマンドシートのB列、C列に記載がある文字列を入力シートのB列、C列にコピー ※コピー時は▽コマンドシートの書式や体裁情報も含めてコピー。 例としては以下になります。 入力シートの A1セルにDを入力した場合は 入力シート    A列    B列    C列 1   D    xxx△  xxx 2        xxxx    x○ 3 以上、ご教授よろしくお願いします。

  • エクセルのシート1にある文字や数値をシート2の指定した場所へ飛ばす事が

    エクセルのシート1にある文字や数値をシート2の指定した場所へ飛ばす事が出来ますでしょうか? 出来るようであれば、ぜひご教授ください。 シート1のA列にNo.、B列に東京23区名、C列に数値A、D列に数値B、E列に数値C、F列に計、最後の行に合計のリストがあります。 例えば、シート1のリストの文京に数値Aが11、数値Bが12、数値Cが13。新宿に数値Aが14、数値Cが15。杉並に数値Bが16。練馬に数値Bが17、数値Cが18と入力された時、シート2の指定の場所、ABC1にNo.の2、ABC2に文京、A3に数値Aの11、B3に数値Bの12、C3に数値Cの13、ABC4に合計の36。DEF1にNo.の4、DEF2に新宿、D3に数値Aの14、F3に数値Cの15、DEF4に合計の29。ABC6にNo.の5、ABC7に杉並、B8に数値Bの16、ABC9に合計の16。DEF6にNo.の7、DEF7に練馬、E8に数値Bの17、F8に数値Cの18、DEF9に合計の35。 このような、文字と数値をシート2へ出力する事が出来ますでしょうか? ようするに、シート1のリストに数値を入れたら、シート2へ自動的にNo.・文字・数値などが表示される。 説明が下手ですみません。 文字での説明は難しいですね。少しでもわかりやすく表にしてみました。 シート1    A   B      C      D      E      F 1  No.  区名   数値A   数値B   数値C    計 2  1   千代田    3  2   文京    11     12      13     36 4  3   中野 5  4   新宿    14             15     29 5  5   杉並          16             16 6  6   世田谷 8  7   練馬          17      18      35 9  8   台東 10  9   荒川 11  合  計     25     45      46     116 シート2    A    B     C     D     E     F 1       2                 4 2       文京              新宿 3  11    12    13     14          15 4       36                29 5 6       5                 7 7       杉並              練馬 8       16                17     18 9       16                35 10 今月はこのようになったり、来月は他の区になったりします。 おわかりになりますでしょうか? 出来ましたら、具体的にわかりやすくご教授をお願い致します。 それでは、宜しくお願い致します。

  • 指定した数だけデータをコピペする方法

    VBAの参考例を教えてください。 <シート1> A列に1から順に数字が入力されており、B列からE列まで数値のデータが入力されています。F列にはB列からE列にデータが入力されているセルの数をカウントした関数が入力されています。 <シート2> シート1のB~Eに入力されたデータが縦に入れ替えの上A列にコピぺされています。 ここで、シート1のA列の数値をコピーし、シート1F列に示されたデータ数分だけ、シート2のF列に縦に順々にペーストしていく方法をご教示ください。シート1のA列に入力された数値が最後の行にくるまでこれを繰り返します。 シート1 A B C D E F 1  a b c d 4 2  e d f   3 3  d e     2 ・ ・ ・ シート2 A B C D E F a         1 b         1 c         1 d         1 e         2 d         2 f          2 d         3 e         3 当方、VBAは全くの初心者です。急遽仕事で必要になってしまい、質問しました。 どうぞよろしくお願いします。

  • エクセルの名前の定義について。

    ご覧いただきありがとうございます。 エクセルの名前の定義についての質問です。 (1)【sheet1】 A2:A6に『aa』、 B2:B10に『bb』、 C2:C6に『cc』という名前を付けたとします。 ちなみにそれぞれのセルには文字列が入力されています。 (名前の定義の《範囲》はブックではなく、sheet1) (2)【sheet2】 B2:D6に『aa』、 B7:D15に『bb』、 B16:D20に『cc』と、sheet1と同じ名前を付けました。 それぞれB列・C列・D列には数字が入力されています。 (名前の定義の《範囲》はブックではなく、sheet2) ちなみにA列には、sheet1に入力されている文字列と同じものが入力されています。 A2:A6にはsheet1で『aa』と名前をつけた範囲と同じ文字列。 A7:A15にはsheet1の『bb』と同じ文字列。 A16:A20には『cc』と同じ文字列です。 ここからが本題です! (3)【sheet3】 A2に何らかしら関数を入れて、【sheet1】で作った名前(aaやbbやcc)が1つ表示されるようにしたとします。 そしてB2には、A2で表示された名前の中の文字列が1つ表示されるようにします。 (例えばA2に『aa』と表示されたら、B2には◯◯) 更にC2には、B2に表示された◯◯という文字列を使って、【sheet2】の名前『aa』の中のB列と、A列にある◯◯とが交差するセルに入力されている数字(図でいう(5))を表示させる関数を入力したいのです。(INDEXやINDIRECT、MATCH関数など…) 他に例えば、A2に『bb』(sheet1の名前)、B2に★★と表示されたら、C2には【sheet2】の名前『bb』の中のB列と、A列にある★★が交差するセルに入力されている数字を表示させたいです。 同じように、今度は、D2には、B2に表示された◯◯という文字列を使って、【sheet2】の名前『aa』のC列と、A列にある◯◯の交差するセルに入力されている数字を表示させたいです。 長々とややこしくてすみません… 説明分かりますでしょうか?? つまりは【sheet3】のC2・D2・E2に入力する関数が知りたいです。 自分なりに関数を入力してみたのですが、A2で表示された名前がsheet1での名前なので、sheet2の情報を引き出す事が出来ません。 わざわざsheet1とsheet2でシートを分けたのは、同じシート内で同じ名前が付けられないと思ったからです! どなたか分かりましたら教えて下さい! どうぞよろしくお願い致します。 ※ちなみに、貼付した図の『・』は以下省略の意味で使ってます。

  • エクセルVBA/抽出・貼付け

    下記を行いたいのですが、どのようなコードになるのでしょうか? シート001(入力用) (1)A1~A50、B1~B50、C1~C50、D1~D50  に数値、E1~E50に文字列 (2)F1~F50、G1~G50、H1~H50、I1~I50  に数値、J1~J50に文字列 ※空白行混在 シート002(計算用) シート001に作ったコマンドボタン:クリックにより、 シート002を表示させ、A1~E100に、 シート(1)のA1~E50とF1~J50の空白行以外を連続して 反映させたい。並べ替え用など別シートを用いずに、 VBAコード内で処理したい。

専門家に質問してみよう