• ベストアンサー

Excelの関数でこんな事出来ますか?

見ていただきありがとうございます。 関数式の事で教えていただきたいのですが・・・ パワーリフティングの集計をやっています。 今までは手書きでと電卓で頑張っていたのですが、 せっかくパソコンがあるのだからExcelで何とか ならないかな~?と、思い、ある程度までは挑戦 してみたのですが、途中で行き詰まってしまいました。 選手(10人として)の体重(少数点第1位まで)をA1~A10まで書き込み、成功した合計重量をB1~B10まで書き込みます。 続いて、C1~C10に成功した合計重量が多い順に1位~10位と表示されるようにします。 この時にB1~B10にどう重量が発生する場合もあります。 この場合基本的にAのセルに入力した体重が少ない人が上位になるようにCのセルに表示したいのですが・・・ 説明が下手で申し訳ありませんけど、よろしくお願いします! 尚、OSはwindowsXPでExcel2002を使用しています

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

  • ベストアンサー
  • zinchan
  • ベストアンサー率49% (97/197)
回答No.5

 もうすでに#2で回答が述べられているようですので、回答そのものではありませんが、集計表の設計について述べさせてもらいたく思います。すでにそうしてるのかもしれませんが、Excelで入力するのでしたら、どうせなら成功した合計重量をB列に入力するのではなく、下記のような集計表を設計したらいかがでしょう。  A列に選手氏名(または選手番号)、B列に選手体重、C列~E列にリフティング種目「a」、F列~H列にリフティング種目「b」、I列~K列にリフティング種目「c」の各3回の記録をそれぞれ入力、L列には、例えば選手が3行目から入力されていれば、=MAX(C3:E3)、M列には=MAX(F3:H3)、N列には=MAX(I3:K3)と関数式を入力し、各種目の、3回のうちの最大重量を表示するようにする。O列に3種目合計重量として=SUM(L3:N3)とする。P列に、=(O3*10)+(10-B3)として、体重重み付け重量とする。Q列に順位として=RANK(P3,P:P)と入れて、L列~Q列までの計算式を、人数分(最終データ行)までコピーすれば、合計重量の多い順、ただし同重量の場合は体重の軽い人を優先とする順番が表示されるはずです。  次の大会で人数の加減があった場合、L列~Q列までの計算式が入った行を人数に合わせれば、正しい順位がその都度表示されます。  なお、P列は、重み付けをしていますが、わり算だと、次の大会で人数の減があった場合、順位の列にエラーが表示されてしまうので、わり算のない式の方がいいと考えます。

mariko_f
質問者

お礼

早速ありがとうございます。 詳しく説明していただき助かります。 本当にありがとうございました!

その他の回答 (5)

回答No.6

> (No.3の方は、A列とB列が逆ですが。) あれま、本当だ。Aが体重でBが成績でしたね。逆数にするのは体重の 方です。成績をひっくり返してはいけません。 maruru01さんご指摘感謝。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.4

こんにちは。maruru01です。 C1に、 =SUMPRODUCT(($B$1:$B$10+1/$A$1:$A$10>B1+1/A1)*1)+1 と入力して、下の行へコピーします。 なお、選手が10人でない場合は、適宜範囲を変更して下さい。 ちなみに、「B1+1/A1」の「+1/A1」の部分は重み付けという手法です。 順位を付ける際の第2キーを微小値で、第1キーに足し引きするという方法です。 No.2やNo.3の方も同様に重み付けをしています。 (No.3の方は、A列とB列が逆ですが。)

mariko_f
質問者

お礼

さっそくありがとうございます。 これも参考になりました! また何かありましたらよろしくお願いします。

回答No.3

1列よけいに使う方法なんですが、合計重量に体重の逆数を足したも のを作ってやって、それでrank関数を使うのが簡単だと思います。具 体的には、C列に =A1+(1/B1) として、D列で =rank(C1,C:C) とするだけです。仕上げにC列の幅を0にしておくのがすっきりしてい いですね。体重が1kg未満の人がいたり合計重量を1kg未満の桁で争う ようなことがない限り、破綻しないはずです。

mariko_f
質問者

お礼

早速ありがとうございます。 なるほど・・・色々なやり方があるものですね。 皆さん詳しくてすごいです。

  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.2

(B1 * 1000) + (1000 - A1) のような式を 作業用の列に入れてから、各行(10人分)コピーし、 その列を元に、RANK 関数を使って順位をつけてやればいいと思います。

mariko_f
質問者

お礼

早速ありがとうございました! 参考になりました。

  • hinebot
  • ベストアンサー率37% (1123/2963)
回答No.1

ご質問のやりたいことのどこまでができて、どこで行き詰まっているのでしょうか?もう少し、具体的に示してください。

mariko_f
質問者

補足

すみませんでした。 私が出来たのは、パワーリフティングの場合3種目ありまして、各種目共に3回行われます。 3回のうちの一番重い重量がその種目の重量として記録されます。 各3種目の一番重い重量の合計がBのセルに表示されます。 結局のところ、各種目の一番重い重量を表示させるのと各種目の合計程度しか出来てません。