お世話になります。

表題の通りなのですが、Excelでマイナス値も含めた点数があり、それに順位を付ける場合の式を教えてください。

例えば
   A   B  
1  20
2  24
3   0
4  -5

とした場合、通常の式 「=RANK(A1,$B$1:$B$4,0)」 で良いと思うのですが、それでは 
   A   B
1  20   2
2  24   1
3   0    3
4  -5   4
となりますよね?

しかし、こうではなく
   A   B
1  20   2
2  24   1
3   0   -
4  -5   3

のようにゼロの部分を除いた範囲で順位付けをしたいのです。

見づらくて大変申し訳ありませんが、お知恵をいただければ幸いです。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

RANK関数の代替は,自分より大きいデータの個数+1番と数えます。


B1:
=IF(A1=0,"-",SUMPRODUCT(($A$1:$A$10<>0)*($A$1:$A$10>A1))+1)
以下コピー。

#参考:同得点を出現順などにして同順位にしない計算も,この応用です。



また既出ご回答の秀逸なアイデアを拝借して
=IF(A1=0,"-",RANK(A1,A:A,0)-IF(A1<0,COUNTIF(A:A,0)))
のようなやり方でもできますね。
    • good
    • 1
この回答へのお礼

おー!できました!

下の方がスッキリしていていいですね。
ありがとうございました!

お礼日時:2011/04/12 15:25

一例です。


=IF(A1<>0,RANK(A1,INDEX(IF($A$1:$A$4=0,"",$A$1:$A$4),),0),"-")
    • good
    • 0
この回答へのお礼

んー、残念ながらゼロが計算されてしまいますね。
見かけ上”-”にはなりますが、これでは3位が無いことになってしまいます。

参考にさせていただきます。
ありがとうございました。

お礼日時:2011/04/12 15:25

こんにちは!


無理矢理って感じの一例です。
データは質問通りA列の1行目からあるとします。
とりあえず100行目まで対応できるようにしてみました。

B1セルに
=IF(A1="","",IF(A1=0,"-",IF(A1>0,COUNTIF($A$1:$A$100,">"&A1)+1,COUNTIF($A$1:$A$100,">"&A1)+1-COUNTIF($A$1:$A$100,0))))
としてオートフィルで下へコピーではどうでしょうか?

他に良い方法があればごめんなさいね。m(__)m
    • good
    • 0
この回答へのお礼

できましたが、ちょっと長すぎるかと(^^;

参考にさせていただきます。
早々のご回答ありがとうございました。

お礼日時:2011/04/12 15:22

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセル プルダウンの作り方

お世話になります。
エクセルでプルダウンの作り方を教えていただけませんでしょうか?
住所を▼のボタンでクリックしたら【北海道,青森,秋田,岩手・・・】などの選択ができるようにしたいのです。
宜しくお願いします。

Aベストアンサー

メニューから「データ」、「入力規則」、「設定」で「入力値の種類」を「リスト」を選択します。
そうすると「元の値」という表示がでますので、そこで前もって作っておいたリストの範囲を指定します。
多くないのでしたら、そのままそこにカンマで区切って入力しても出来ます。

QExcel ゼロまたは空白を除いて最小値

A列に氏名(重複あり)、B列に値(ゼロまたは空白)があり
仮にC1セルに、A列の中から任意の氏名を指定すると
D1セルにゼロまたは空白を除いて最小値を表示したいのです。EXcel2002

Aベストアンサー

>式の最後の「1E+307」の意味は何ですか?
ばかでかい数値です。
条件に該当しないデータ(B列)をそのばかでかい数値に置き換えておいて、MIN関数で最小値を求める際に絶対に拾わないようにするためのものです。
したがって、B列に入る可能性のある最大の値よりも大きければ何でもいいです。
仮に、B列の値が年齢なら、まあ、200で十分ということです。

Qエクセルでプルダウンメニューの作り方

  エクセルの画面で、よく三角形を逆さまにした形をクリックするといくつかメニューが出てき、どれかを選べるようになっていますが、その作り方を教えてください。
 会社で人事を担当していますが、三角形(プルダウンボタン)をクリックすると社員氏名一覧が表示され、そこから選択できるようにしたいのです。
 しばらく自力でいろいろやってみましたが、さっぱり見当がつかず、どうやればいいのか分かりませんでした。よろしくお願いします。

Aベストアンサー

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならないでしょうか?
Excel2007の場合は↓のURLが参考になるかもしれません。

http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/excel2007-ny_kis2.html

尚、同一Sheetに「名簿表」を作成する場合は名前定義する必要はなくて
「元の値」の右側の四角をクリックし、リスト表示したいセルをそのまま範囲指定すればOKです。

以上、お役に立てば良いのですが・・・m(_ _)m

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならない...続きを読む

Qランクを付けるCalc(Excel) の関数

初歩的で申し訳ないですが、Calc(Excel)関数についてです。

写真のように表を作り、それぞれの行に50から100程度の数値を入力したのですが、そのすぐ隣の行に、右の方にある階級(AからG)に合うように階級を自動的に関数で入力しようと考えています。

その方法として、下のようにIF関数を何重にも使ってやることもできなくはないのですが、複雑である上に大変で困っています。
=IF(E17>$I$9;$H$9;IF(E17>$I$10;$H$10;IF(E17>$I$11;$H$11;IF(E17>$I$12;$H$12;IF(E17>$I$13;$H$13;IF(E17>$I$14;$H$14;$H$15))))))

数値の範囲を左の表で自動で判定して、簡単にAからGを出力する関数はありますか?教えてください。

ちなみにソフトはOpenOfficeのCalcを使用しています。

Aベストアンサー

#1です
Excelで両パターンを提示しますと
B3セル
=INDEX($E$2:$E$8,MATCH(A2,$G$2:$G$8,-1)-ISNUMBER(MATCH(A2,$G$3:$G$8,0)))
C3セル
=INDEX($E$2:$E$8,MATCH(A2,$G$2:$G$8,-1))
B3:C3 下へオートフィル
G2セル =MAX(A:A)
添付図参照

Qエクセル(Excel) 納品書の作り方【画像修正版

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が見にくかったのでシート<CENTER></CENTER>だけにしました。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルでコピー!
そのまま最後の24行目までコピーしておきます。

F4セルには
=IF(COUNTBLANK(B4:E4),"",D4*E4)
という数式を入れ、F24までオートフィルでコピー!

これでB列に商品番号を入力すればSheet2のデータが反映され、
E列に数量を入力でF列に金額が表示されると思います。

最後に合計金額のF26セルは
=IF(COUNT(F4:F24),SUM(F4:F24),"")
手数料のF27セルは
=IF(F26="","",F26*0.2)

これで何とか形にならないでしょうか?

※ 振込金額の欄は不明ですので手を付けていません。

参考になりますかね?m(_ _)m

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルで...続きを読む

Qexcel2007 数値の種類をランク付けしたいのですが…m(_ _)m

はじめまして
excel初心者で実はこまっております。
仮に下記のようなランクデータがあるとします。

商品の値段 ランク
100      1
120      3
130      5
100      1
120      3
150      6

これを
(1)何段階に分かれているのか?(整数の種類が何個あるのか?)
  =この場合は100と120と130と150の4つとなります。
(2)その階層内で何位にあたるのか?
  =仮に130円の商品であれば、その4階層に対して3番目となります。
を出したいのですが私には出来ません。
出来れば↓こんな風に作りたいのです。

商品の値段 ランク 整数の種類 整数の階層
100      1     4      1
120      3     4      2
130      5     4      3
100      1     4      1
120      3     4      2
150      6     4      4

商品比較をする際に値段の階層を調べその商品がどの位置にいるのかを調べる為にこのような方法をと思っております。
どなたか教えて頂ければ幸いです。
何卒宜しくお願い申し上げます m(_ _)m

はじめまして
excel初心者で実はこまっております。
仮に下記のようなランクデータがあるとします。

商品の値段 ランク
100      1
120      3
130      5
100      1
120      3
150      6

これを
(1)何段階に分かれているのか?(整数の種類が何個あるのか?)
  =この場合は100と120と130と150の4つとなります。
(2)その階層内で何位にあたるのか?
  =仮に130円の商品であれば、その4階層に対して3番目となります。
...続きを読む

Aベストアンサー

整数の種類は範囲をA2:A7とした場合
 =SUM(IF(FREQUENCY(A2:A7,A2:A7)>0,1)) で、でます。

整数の階層は、
D2に =SUMPRODUCT(($A$2:$A$7<=A2)/COUNTIF($A$2:$A$7,$A$2:$A$7))
と、入れてD7までコピー

これでどうでしょう。

Qエクセル(Excel) 納品書の作り方【改めて】

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が貼り付けてあります。商品名は1番以外伏せさせていただいています。
くっつけてありますが、左側がシート1・右側がシート2です。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

画像がいまいちよく見えないのですが、納品書の項目は左から、No、商品番号、商品名、単価、数量、金額でいいのでしょうか(名前は多少違っていても意味があっていればもんだいないです)

でしたら、
C1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,2,FALSE))
D1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,3,FALSE))
E1セルは空白で
F1セルに=IF(D2="","",D2*E2)
といれて、C1からF1までをコピーしてその下の行にタテに貼り付ければ出来ますよ。
おそらくエラーが出たのは、コピーしたときにVLOOKUP関数の最初のセルの指定がずれてしまっているのでは無いかと思いますよ。     

QExcelでの引き算や足し算でマイナス値やゼロ値を計算させない方法はありますか?

電気料金が気になり 毎日の数値を記録しようと思い
数値を計算させようと思ったのですがうまくいきません。
どうすれば良いのでしょうか

具体的には下記のようなことになってしまいます。

A1 10000  B1 (A2-A1)→計算数値(セル表示数値)は10
A2 10010   B2 ↓以下同じ計算
A3 10020   B3
A4 10030   B4
A5 10040   B5
A6 (未入力)  B6   -10040

Aの列に数値を毎日入力となるのですが
こうすると未入力日(当日もしくは翌日)は
空白となってしまうので上記例で言いますと
A6-A5とするとマイナスになってしまいます。
これをB列セルのユーザー定義で「#;!0;0」とし
マイナス値をゼロにする方法にするときちんとゼロには
なるのですが 今度は合計値の計算でゼロになってしまいます。

B列の最下行?となる部分、B32セルにB1からB31までを足し算の
関数を設定するとB32セルの表示数値はゼロ。
ユーザー定義でゼロを表示しない方法を使うと 今度は合計値が
マイナス表示されてしまいます。
ご存じの方にとっては こんなことで悩むこと自体がおかしい
くらい簡単なことなのかも知れませんが
いろいろ試した結果 未だにうまくいきません
どうかよろしくお願い致します。

電気料金が気になり 毎日の数値を記録しようと思い
数値を計算させようと思ったのですがうまくいきません。
どうすれば良いのでしょうか

具体的には下記のようなことになってしまいます。

A1 10000  B1 (A2-A1)→計算数値(セル表示数値)は10
A2 10010   B2 ↓以下同じ計算
A3 10020   B3
A4 10030   B4
A5 10040   B5
A6 (未入力)  B6   -10040

Aの列に数値を毎日入力となるのですが
こうすると未入力日(当日もしくは翌日)は
空白となってしまうので上記例で...続きを読む

Aベストアンサー

>これをB列セルのユーザー定義で「#;!0;0」とし
表示が0なだけでマイナス数値は存在します。
後B6の-10040はB5の間違いですよね。

A6がブランクなら計算しないというのであれば
B5=IF(A6="","",A6-A5)
で計算できます。
でもA7に数値が入る時、A7-A5を計算するのでしょうか?

Qエクセル2007でプルダウンで選んだものに反応

Excel2007でプルダウンで選んだものに反応して隣のセルが自動入力される方法(エクセル2007)
A1をプルダウンで「猫」「犬」から選べるようにし、「猫」を選んだ場合B1に自動に「111」が、「犬」を選んだ場合B1に自動に「222」と入力されるようにしたいです。
ご教授の程、宜しくお願いします。

Aベストアンサー

VLOOKUP関数での方法です。
(1)別シートに入力文字列と対応コード表を作成。(仮にSheet2のA:B列範囲で順不同)
(2)B1に=IF(COUNTIF(Sheet2!A:A,A1),VLOOKUP(A1,Sheet2!A:B,2FALSE),"")を設定
   入力文字列が存在しない場合は空白としています。

QExcelもしくはAccesでゼロを頭に5桁付けいたい

データの加工をしたいのですが、件数が多く手動では手間がかかりすぎてやり方が分からずこまってます。

12345⇒0000012345
23456⇒0000023456
34567⇒0000034567

上記のように5桁のようなデータをエクセルもしくはアクセスの入ったPCで、頭にゼロを付けて10桁にしたいのです。
解決手段がありますでしょうか。教えてください。

Aベストアンサー

もうひとつ。

例)A1 に「12345」
  B1 には、『 = Right( "0000000000" & Trim( A1 ) , 10 )』

回りくどいですが、私はよく使います。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング