Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : Excel 2013)
関数で、日付の列にある数値から順位を求めたい。
投稿日時: 17/10/10 14:10:17
投稿者: kiyo-k

教えて頂きたいのですが…
 
2つの条件から順位を求めたいのです。
日付ごとに順位を表示させたい時は、どうすれば良いのでしょう?
 
 
 
 ・A2のセルは today() 関数で 日付を出してます。
 ・B7、C7、D7、E7と毎日数字が入ります。
 
  その度 B2、C2、D2、E2に順位を表示させたい。
  
 
 
            A列       B列    C列      D列     E列
1行目                a      b      c      d
2行目      2017/10/16    ●位    ●位      ●位    ●位   
3行目      目標      102,000    232,000  144,000    112,000
4行目     合計      1,000    1,100      1,200    1,300
5行目     達成率      0.98%    0.47%  0.83%        1.16%
6行目     残り金額 -101,000    -230,900 -142,800    -110,700
7行目     2017/10/16    1,000    1,100     1,200     1,300
8行目     2017/10/17                
9行目     2017/10/18                
10行目    2017/10/19                
        
 よろしくお願いします。
[/u]

回答
投稿日時: 17/10/10 14:36:02
投稿者: WinArrow
投稿者のウェブサイトに移動

説明がよくわかりません。
 
順位を求めるには、その母数集団が必要です。
 
例を示して貰えますか?

回答
投稿日時: 17/10/10 14:48:53
投稿者: bi

B2:=SUMPRODUCT(($A$7:$A$100=$A2)*($B$7:$E$100>LOOKUP(10^16,B7:B100)))+1
右にコピー
 
ということですか?同じ数値があると1、1、3、4のように表示されます。

回答
投稿日時: 17/10/10 15:40:06
投稿者: んなっと

もしかしたらこんなのも。(A列日付範囲昇順限定)
 
B2
=RANK(LOOKUP($A2,$A7:B200),INDEX($B7:$E200,MATCH($A2,$A7:$A200,0),))
右方向・→

投稿日時: 17/10/10 16:32:29
投稿者: kiyo-k

WinArrow さんの引用:
説明がよくわかりません。
 
順位を求めるには、その母数集団が必要です。
 
例を示して貰えますか?

 
 
回答ありがとうございます。
説明不足ですいません。
  
  
A列7行目の日付の右横(b列)から日付ごとに数字が入ります。
A列7行目の日付の右横(b列)から、入力された数字の順位を2行目の ●位 の部分に毎日表示させたい。
  
 10/16   a は1位、 c は2位、b は3位 
 10/17   a は3位、 b は1位、c は2位 というように。
  
同じ数字が入っていた場合( aとcに同じ数が入っていた場合)
  
 10/16  a 3位、 b 1位、 c 3位  となるように。
  
  
この説明で、大丈夫でしょうか?
宜しくお願いします。

回答
投稿日時: 17/10/10 16:42:36
投稿者: bi

んなっとさんや私の式は試してみたのでしょうか?

投稿日時: 17/10/10 17:26:11
投稿者: kiyo-k

bi さんの引用:
B2:=SUMPRODUCT(($A$7:$A$100=$A2)*($B$7:$E$100>LOOKUP(10^16,B7:B100)))+1
右にコピー
 
ということですか?同じ数値があると1、1、3、4のように表示されます。

 
回答ありがとうございます。
返信遅くなり申し訳ありません。
 
教えて頂いた数式を入れて試してみた所、順位がすべて同じになってしまいました。
 

投稿日時: 17/10/10 17:29:24
投稿者: kiyo-k

んなっと さんの引用:
もしかしたらこんなのも。(A列日付範囲昇順限定)
 
B2
=RANK(LOOKUP($A2,$A7:B200),INDEX($B7:$E200,MATCH($A2,$A7:$A200,0),))
右方向・→

 
 
回答ありがとうございます。
返信が遅くなり申し訳ありません。
 
教えて頂いた数式を試してみたのですが、
2位から表示されるのですが、1位 が出ません…
 
説明不足な点がまだありますでしょうか?

回答
投稿日時: 17/10/10 18:16:10
投稿者: んなっと

昇順なのか降順なのかも違っていたようですが、それは後回しにしましょう。
 
新規ワークシートに、提示されたレイアウトと全く同じ表を作って試したらどうなりますか?
 
「実際はE列までではなく、もっと右の列までデータが存在します。
そのため、数式の"E"の部分を自分で"Z"に書き換えました」
などといった情報は、次の段階で書いてもらいます。
今は書き込まないでください。

回答
投稿日時: 17/10/10 18:23:19
投稿者: さぶポン

質問の意図を理解できてなかったらゴメンナサイ。
こんな数式ではいかがでしょう?
 
セルB2
=RANK(INDEX(B$7:B$15,MATCH($A$2,$A$7:$A$15,0)),OFFSET($B$6,MATCH($A$2,$A$7:$A$15,0),0,1,4))
 
「15」は対象の最大行ですので、必要に応じて変更してくだざい。

投稿日時: 17/10/10 21:31:02
投稿者: kiyo-k

んなっと さんの引用:
昇順なのか降順なのかも違っていたようですが、それは後回しにしましょう。
 
新規ワークシートに、提示されたレイアウトと全く同じ表を作って試したらどうなりますか?
 
「実際はE列までではなく、もっと右の列までデータが存在します。
そのため、数式の"E"の部分を自分で"Z"に書き換えました」
などといった情報は、次の段階で書いてもらいます。
今は書き込まないでください。

 
 
新規シートに同じレイアウトで表を作って試してみたら、
キチンと順位が出ました。
 
オリジナルの表に使ってみます。
 
 
有難うございました。