• 締切済み

エクセルの関数を使ってランキングをつけています

ある表を元に、ランキングをつけています 元になる表は B列 C列 D列 E列 担当者名 本日売上 今月累計 先月累計 Aさん 10000円 100000円 90000円 Bさん 9000円 90000円 80000円 Cさん 8000円 80000円 70000円 ~続く という風になっています ランキングの表は S4セルに「10」と入力し、書式設定で上位10位までを表示としています R列 S列 T列 順位 担当者 今月累計 1 Aさん 100000 2 Bさん 90000 3 Cさん 80000 4 5 6 7 8 9 10 となっています それぞれのセルに関数が入っていて、 R列には、=IF($S$4>=ROWS(R$7:R7),ROWS(R$7:R7),\"\") S列には、=IF($R7<=$S$4,OFFSET($B$3,MATCH(T7,$D$4:$D$54,0),0),\"\") T列には、=IF(R7<=$S$4,LARGE($D$4:$D$54,$R7),\"\") となっています これで今まではうまくいっていたんですが、 同じ数値がある場合に、ランキングの表に 同じ名前の人が2つ表示されたりしてしまいます。 原因を調べているのですが、わからなくて、 さらにIF関数を入れて何かしら指示をしなければいけないのかなと 思っているのですが、、すみません、 急いでいるので意味のわからない文章になっているかもしれませんが、 どなたか「これでは?」というひらめきがありましたら お手数ですがご指導お願い致します。

みんなの回答

  • survey
  • ベストアンサー率26% (17/65)
回答No.1

関数で処理しようとすると、ご質問のような現象が避けられないのでは?本来、こういったものは、データベース(クエリー)を利用するのが非常に簡単なんですけどね。 どうしてもエクセルでということであれば、  (1)ランキング表を地道に並べ替える  (2)元の表をリスト化する   →表範囲を右クリック、リストの作成  (3)マクロで処理する (2)なら並べ替えが簡単です。 回答になってなくてすいません。

komugi1107
質問者

お礼

ありがとうございます。 リスト化というのを試してみて ダメならVBAをやってみようと思います。 関数で出来ればいいなと思ったんですが、やはり難しいですよね。。 頑張ってみます!

関連するQ&A

  • エクセル関数で教えてください。

    エクセルでB列には商品名(セルB1にみかんセルB2にみかんセルB3にみかんセルB4に柿セルB5に柿セルB6に柿、C列にはみかん柿の数量ランク(例:C1に1~、C2に10~、C3に100~と記入)、D列にはC列のランク毎の単価が表示されています。(D1に1000、D2に800、D3に500、D4に1500など) この表を、ほかのシートのA1にみかん、A2に柿と入力させて、B1に関数を入力してB1セル内で数量ランクの1~1000、10~800、100~500と横一列に表示させたいのですが可能でしょうか? どのような関数が適当でしょうか? このパソコンはエクセル使えず、添付できずわかりにくい説明で申し訳ないのですがどなたか教えてください。よろしくお願いいたします。

  • Excelで関数同士のネストのやり方について

    Excel2003で下記のようなことがしたいのですが インターネット等を見たりしていますが どうしても分からないので質問します。 -------------------------------------        B列    C列   D列 1行目  0.978205321 成功  97 2行目  0.886081752 成功   87 3行目  0.553482324 失敗  56 4行目  0.05331816 失敗    6 5行目  0.562187845 失敗  1 ------------------------------------- 上記表にて IF関数でD列、1~5行目の中に1がある場合、 1のあるセルの隣(左側) 左列のC列の"失敗"と表示させたい場合 「IF関数とレフト関数を組み合わせてネストすれば 良いのでしょうか? その場合入れ子のやり方はどうしたら良いのでしょうか? =IF(D5:D9=1,LEFT(C:C,2))だと計算式自体意味不明となってしまうので、 関数もしくはVBAを使うとどのようなネスト関数/プログラムになるのか 教えていただけませんか? なにとぞ説明不足なこんな愚かで無知な私どもに ご教授宜しくお願いします。

  • 累計の計算とその表示について

    各セルに次のようなデータがあり、D列に累計を出してゆきます。   A B C   D 1 20 30 50  累計 2 10 20 30 3 どのセルにもデータなし(データはなくても行は必要です。) 4 15 25 35 累計を出してゆくとデータのないセルがにも累計が表示されます。書式のユーザー設定で非表示に出来ることは分かったのですが、この表を使うのは私だけではないので、関数を使って出来ればと思い、IF関数にandやorなどの組み合わせで考えましたができませんでした。どういうやり方がよいのでしょうか。

  • エクセルの関数で2つの条件に合うものを探す。

    エクセルの関数で下記のことをしたいのです。 表(1) T>=0.6  0.6>T>=0.3  0.3>T>=0.15 U<2   A     B       C 2<=U<3  B     B-C     D 3<=U<4  C      C      D 4<=U<6  D     C-D     D 6<=U    E      D      D 別の表(2)に U   T         1.5  0.3         0.9  0.8             5.9  0.13         ・   ・         ・   ・ とあります。 そのためUの値とTの値で表(1)のAからE値を抽出し別の表にAからEを表示したいのです。エクセルの関数(IF,AND,LOOKUP等)を試してみたのですがうまくいきません。できるだけエクセルの関数のみで、よい方法があれば教えてください。よろしくおねがいします。     

  • ExcelでのIF関数について

    説明不足で分かりにくいかもしれませんが ExcelのIF関数を用いて参照させる方法で式を簡略化させる方法を探しています。 セル内の式に只今IF関数を 次のように組み立てているのですが この式のC3部分を+1ずつずらして表示させたい場合フィルを使うと全体的に+1ずつずれてしまいます ------------------- =IF(C3=R30,S30,IF(C3=R31,S31,IF(C3=R32,S32,IF(B3E3=R33,S33,IF(C3=R34,S34,IF(C3=R35,S35,IF(C3=R36,S36,IF(C3=R37,S37)))))))) -------------------- 式代入 -------------------- =IF(●=R30,S30,IF(●=R31,S31,IF(●=R32,S32,IF(B3E3=R33,S33,IF(●=R34,S34,IF(●=R35,S35,IF(●=R36,S36,IF(●=R37,S37)))))))) の●のみ変更したい時 普通にコピーフィルを使うと =IF(C4=R31,S31,IF(C4=R32,S32,IF(C4=R33,S33,IF(B3E3=R34,S34,IF(C4=R35,S35,IF(C4=R36,S36,IF(C4=R37,S37,IF(C4=R38,S38)))))))) =IF(C5=R32,S32,IF(C5=R33,S33,IF(C5=R34,S34,IF(B3E3=R35,S35,IF(C5=R36,S36,IF(C5=R37,S37,IF(C5=R38,S38,IF(C5=R39,S39)))))))) となってしまいます。 ----------------------- =IF(●=R30,S30,IF(●=R31,S31,IF(●=R32,S32,IF(B3E3=R33,S33,IF(●=R34,S34,IF(●=R35,S35,IF(●=R36,S36,IF(●=R37,S37)))))))) の式のまま ●のところを C3セル~C200セルまで代入 したい場合 置き換えする以外に 早い方法ありますか?

  • EXCEL関数がよく分からないのです…

    日付 A   B  C   D 2/1  100  10  90  90 2/2  80  20  60  75 2/3  140  20  120  90 2/4   90  30   60   82.5 上の表で、C=A-Bです。 Dは、Cの累計を、相当する日数で割ったものです(2/3までの累計なら3で割り、2/4までの累計は4で割る、という具合に…)。 このDをEXCELの関数を使って算出できるようにしたいのですが、どうすればよいのでしょうか? 尚、この表は一か月単位で作る予定です。 また、C列は表示の必要がなく、A,B,D だけの表の方が好都合です。

  • エクセル関数 何を使えばいいか教えてください

    初心者なもので作成中の資料に関数等を使ってスムーズに表示したいと考えています どなたかお知恵を貸して下さいますようお願いします。 出来れば本日中に頂けると有難いです。 内容     表1           表2  累計  実数   累計  実数 A   1    ?     A  3    ? B   2    ?  ⇔  B  2 ? C  3    ?     C  1 ? D  4    ?     D  1    ? 上記のようなエクセルシートがあります。 ・実数値を求めます(普通は引き算すればいいのですが…) ・行Aから行D 及び 累計と実数は固定です ・表1は行Aから下へ累計値を入力 表2は行Dから上へ累計値を入力 上下両方の入力方法に対して対応できる関数式を教えてください。 説明が下手なのですみません

  • excelの関数をしえてください。

    こんにちは。exceldでの関数で質問です。 使用関数と検索範囲の指定の方法を教えてください。 表は2つあります。 表1は行タイトルがクラス名(A~D)、列タイトルに1~25までの級を表す数字の入った表です。参照表です。  A B C D 1 ○ ◇ ■ △ 2 △ ○ ◇ ■ (内容はすべて違うものです) 3 ■ △ ◇ ○ 4 5 表2は関数を利用して表1より該当するセルの内容を 表示したいのです。 表2 A列にクラス(A~D 表1と同じ項目) B列に級 C列に数値 D列に前年度数値  クラス 級 数値 前数値 A 2 △ △ C   5 ○   ○  B 1 D 3 C列にはD列の前数値の近似値を表1より参照したいのです。その際にクラスわけからAであれば表1の Aクラスの列から近似値をさがしたいのです。 B列にはC列で求めた近似値が表1でどの級かを 求めたいのです。 表2のクラスわけがランダムなのと、 検索範囲がクラスによって異なる箇所となるので 検索範囲の指定の方法、さらにはどの関数を 使用して行えばよいのかわかりません。 説明がわかりづらいかと思いますが、 宜しくお願いします。 OS:NT4.0 excel2000 を使用しています。

  • エクセル IF関数 初心者です。。

    A    B   C  D Aさん 9:00  1  9:00 Bさん 10:00 2  9:30 Cさん 11:00 3  10:00 Dさん 12:00 4  10:30 Eさん 9:00  1  9:00 A列氏名 B列時間 C列 B列IF関数 9:00からは1、10時からは2、 11からは3・・・ D列はC列のVLOOKUP関数 1=9:00、2=9:30、3=10:00・・・ そこでお聞きしたいのですが・・ A    B   C  D Aさん 9:00  1  9:00 Bさん 10:00 3  10:00 Cさん 11:00 4  10:30 Dさん 12:00 5  11:00 Eさん 9:00  2  9:30 IF関数を用いて IF(B1>=0.375),1,if(B1>=0.416666666666667),2,IF(B1>=0.458333333333333),3・・・ Eさんが2になるような数式がわかりません。 よろしくお願いします。。

  • Excelの関数『IF』にて・・・

    EXCELにて、関数IFを使って一覧表から 自動入力をしたいと考えています。 例えば、以下のようにしてセル『C1』の数字に 応じて、自動を試みたい時 =IF($C$1>80,"=A1",IF($C$1>70,"=B1","=C1")) =A1,=B1,=C1 の場所を文字列としてしか読み取ってくれません =A1,=B1,=C1では無く=A1,=B1,=C1のセルに入力されてる 数式(他のセルの値)を、表示したいんですが どのようにすれば可能でしょうか? 何度やっても「=A1」と、そのまま文字列として出て来ちゃいます。