• ベストアンサー

エクセルの計算式

今、エクセルで表を作成しています。 名前 数量  順位 A  10  5 B  50  2 C  90  1 D  30  4 E  50  2 名前と数値を打ち込み、「RANK」で順位を付けています。これを別なシートへ、1位から順に並ばせるにはどうしたらよいでしょうか?今、「match」を使って作っているのですが、同一順位の部分がエラーとなってしまします。よろしくお願いします。

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

  • ベストアンサー
  • kaisendon
  • ベストアンサー率44% (114/257)
回答No.3

こんにちは 「作業列」を作ると簡単な数式で(配列数式を使わないで)出来ると思います。 例示の表のシート名がSheet1 一行目が項目で二行目からデータがあると仮定して 名前:A列  数量:B列  順位:C列 作業列を作ります。(仮にD列で作ってみました) D2に =C2+ROW()/100  必要なだけ下にコピー 別シートの表構成も例示の表と同じとして やはり、仮にD列に作業列を作って 別シートのD2に =SMALL(Sheet1!$D$2:$D$6,ROW(A1)) A2に =INDEX(Sheet1!A$2:A$6,MATCH($D2,Sheet1!$D$2:$D$6,0)) B2に =INDEX(Sheet1!B$2:B$6,MATCH($D2,Sheet1!$D$2:$D$6,0)) C2に =TRUNC(D2) A1:D1を選択して、必要なだけ下にフィルコピー 補足:データの数量が100件を超えるようなら Sheet1の D2の式を =C2+ROW()/1000 としてください。 ROW関数を使っているのは、 「重み付け」といって順位の重複があっても 違うデータとして扱えるようにするためです。 今回は順位に重み付けをした例でやってみましたが、 点数に重み付けをしてみてもいいでしょう。 もちろん実際には、上記の式を参考にしながら セル参照先を変えてゆくと思いますが 別シートD2の =SMALL(Sheet1!$D$2:$D$6,ROW(A1)) のROW(A1) は変えないで下さい。(SMALL関数の引数で 1 という値が 欲しいので、ROW(A1)にしているだけでA1セルの内容を参照している訳ではありませんので。

その他の回答 (3)

  • tak2003
  • ベストアンサー率32% (174/540)
回答No.4

全部入力した後に順位を昇順で並び替えるのは駄目ですか?

kahorinn
質問者

お礼

すみません御礼が遅くなり、申し訳ありません。実は私もその方法を使っていましたが、もっともっと簡単にできないかと注文され、上記の質問をしました。御回答ありがとうございました。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

順位の所で一工夫 =RANK(値,数量の範囲,0)+ROW()/100 表示形式は0にして、小数点以下は表示しないようにしてください。 順位2=SMALL(順位の範囲,ROW(A1)) 名前2=INDEX(名前の範囲,MATCT(順位2,順位2の範囲,0)-1,0) 同順位の場合は上の行から順番に表示されます。 名前 数量 順位 順位 名前 A 10 5.02 1.04 C B 50 2.03 2.03 B C 90 1.04 2.06 E D 30 4.05 4.05 D E 50 2.06 5.02 A

  • miyarita
  • ベストアンサー率0% (0/1)
回答No.1

こんにちは 私は難しい関数はわかりませんので、初歩的な関数で お答えします。 1 作業セルを、例えばD行に作成します。  数量b2:b6とすると =b2+row()/100の関数で  b列の数量に、行番号/100を加えた値を入れます。  この/100は、100行目で1となって、実際の数量が  変わってしまいますので、データ数によって変えてください。 2 c行の順は =rank(d2,d$2:d$6,0)と  作業セルの値でランク付けすれば、同じランクは  なくなります。  

関連する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ですと、上の行しか読み込まれず・・・)が ありましたらご教示いただけないでしょうか? 御確認の程、よろしくお願いします。

  • エクセルで順位表を並び替えたい。同順位表示方法は?

    エクセルで順位表を別シートに並び替えたいと考えていますが、同点になった場合はどうしたらよいでしょうか? シート1で集計した結果を参照し、シート2に上から順に1位から表示させる表を作りたいです。 試行錯誤の結果、下記まで作業しました。 ========= <シート1>     A        B       C           (1)商品名  (2)販売額  (3)ランキング  1    a     1000       2 2   b     1500      1 3  c     1000      2 4  d     500      4 5  e     300      5 (1)手入力 (2)SUM関数で集計した値 (3)RANK関数 <シート2>     A        B    C (3) ランキング  (1)商品名 (2)販売額 1 2 3 4 5 (3)手入力 (2)INDEXとMATCH関数 (3)INDEXとMATCH関数 ========= 1)シート2の(3)ランキングをシート1を参照し降順で自動表示させる方法を教えてください。 今は手入力なので、同順位があった場合にずれが生じてしまいます。 2)シート2に同順位表示のまま並び替えする方法を教えてください。 INDEX関数とMATCH関数を使っていましたが、 シート1で同順位表示されていた箇所が、シート2で表示できませんでした。 どうぞ宜しくお願いいたします。

  • エクセルのMATCH関数について

    エクセルのMATCH関数を使って“E18:E23”の表から125以下の1番目の値相当する”“E11:E16”の値を取り出す計算式を作成しています。(“E18:E23”表のそれぞれの行の数値が“E11:E16”の表のそれぞれの行の数値のリンクしています。そのときの数式が“=INDEX(E11:E16,MATCH(125,E18:E23,1),1)”です。この場合は上手くいくのですが、条件を“125以上の1番目の値相当するを作成して、”=INDEX(E11:E16,MATCH(125,E18:E23,-1),1)“の様にMATCHの式の最後を-1にするんですが、”#N/A“のエラーメッセージが表示します。どうすればいいのでしょうか?(*なお表“E18:E23”は数値が小さい順ですが、表“E11:E16”そうとは限りません)  それと、125以上の1番目だけでなく、2番目、3番目を拾い出す計算式はないでしょうか? 宜しくお願いします。関数に関しては初心者でいろいろ検索しましたが、ぴったり来ません。

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

    エクセルで現在ランキング表を作成しています。 A1~C3に数値が、D1~F3に文字列が入っています。 A1の数値とD1の文字列、A2の数値とD2の文字列を関連付けるようにし、 別シートに数値の大きい順に列で並べ替え、ランキング順を付けて下図のように したいのですが、文字列を関連付けて並び替えることができません。どうしたらよいでしょうか? シート2のA列がランキング順位、B列が数値の大きい順、C列にBの数値と関連付けた文字列 シート1              シート2 ____A____B____C____D____E____F     A__B___C 1__12__18__00__AA__AB__AC    1__1__25__BC 2__10__08__25__BA__BB__BC    2__2__19__CC 3__05__09__19__CA__AB__CC    3__3__18__AB

  • エクセルで0値を計算の対象にしない方法

    エクセル表で以下の状態の時の計算式が分かりません。 A1~A18までそれぞれ数値が入っています。(小数点以下1桁) B列にそのA1~A18までの順位が表示されるような計算式を入れました。(順位は数値が小さい順です) =IF(A1="","",RANK(A5,A:A,1)) これで順位が表示されるようにはなりました。 ここからが今回困ってる点です。 このシートでは毎回違う数値がA列に入ります。 その都度A列の何行目まで数値が入るかは決まっていません。 最多の場合でA18まで、最小の場合でA8までです。 しかし18より少ない場合には0値が入るようになっています。 (0値は表示させていません) 上記の計算式では例えばA13まで数値が入った場合、 B列に表示される順位はA列に何らかの数値が入った業は順位が表示されますが、 0値の入った行の順位は1と表示されてしまいます。 つまりこの場合1位が5個(14行目~18行目)もあり、その次の順位が6から始まってしまいます。 私の望んでいることは、A列に0値が入ってるセルはB列に表示する順位の対象にしないことです。 エクセル初心者でも理解できるような回答をよろしくお願いいたします。

  • 【エクセル・VBAコードの書き方】データの抽出

       1位   2位     3位     4位     5位 A   B        25 C              30            18 D E   11 VBAの初心者であります。 上のエクセルの表において、以下の作業を自動的に行なえるようなVBAのコードを教えて頂けると有り難く思います。 まず表の説明からしますと、 A~Eは人の名前を表しています。 1~5位は彼らの順位(ある競争)です。 数値が四つ(25、30、18、11)ありますが、 この四つの数値のなかで、20以上のものだけが、別のシートに自動的に入力されるようにしたいです。 かつ、その20以上の数値の位置(例えば25であれば、B、2位)もそのシートに入力されるようにしたいのです。 例えば別のシートでは以下のようにデータを表したいです。 名前    順位    数値  B     2位     25  C     3位     30 感覚的にはif 文とLoop文を用いると思うのですが、、うまくコードが組めません。 そもそもこれらの作業をVBA(マクロ)に組むことができますでしょうか。 宜しくお願いいたします。

  • rank関数?

    次のような表があって、順位をつけたいのですが、 別シートに順位順の表を自動的に作成する事は可能 なのでしょうか? よろしくお願いいたします。 ↓の表でまず順位をだしてからでも良いのですが      件数   順位 Aさん   5    5 Bさん   0     Cさん   4    6 Dさん   2    7 Eさん  10    1 Fさん   2    7 Gさん   6    4 Hさん   0     Iさん   7    3 Jさん   8    2 別シートに順位順の表を作成したいのです。 順位          件数 1     Eさん   10 2     Jさん    8 3     Iさん    7 4     Gさん    6 5     Aさん    5 6     Cさん    4 7     Dさん    2 7     Fさん    2 何か良い方法があるでしょうか? よろしくお願いいたします。

  • RANK関数について

    RANK関数を使い表を作成しています。ただし、同じ数値がある場合、片方がエラーとなってしまいます。対処法を知っている方がいらっしゃいましたら、教えてください。 (例) A  10 B  20 C  10 数値の大きい順に順位をつけようとすると、3位がエラーとなってしまいます。

  • Excelの計算式

    検索してもわからなかったので質問失礼いたします。 Excelで月別の単価×数量の計算をしたいのですが、単価は固定、数量は毎月違います。 単価×1月分数量、単価×2月分数量といった形の表としてまとめたいのですが良い方法はないでしょうか。 質問がわかりにくくて申し訳ありません。 今現在は単価がA1、数量がC1~F1に入力されているので、 【=A1*C1+A1*D1+A1*E1+A1*F1】といった計算式で計算しているのですが、 この計算だとエラーも出ますし式もごちゃごちゃとしてしまうので整理したいのです。 回答宜しくお願いします。

  • エクセルで順位表

    どなたか教えて下さい。 エクセルで順位表を作りたいのですが、 ・1枚目のシートには全成績を ・2枚目のシートに成績上位順に並び替えた形の 順位表を作成したいのですが、簡単な方法ないでしょうか? 各部門別上位10傑といった感じの順位表を作りたいのです。 分かりにくい表現で申し訳ございませんが、ひとつ知恵を 拝借させて頂けないでしょうか? 宜しくお願い致します。

専門家に質問してみよう