プロが教えるわが家の防犯対策術!

選挙投票数の数を随時入力し、その途中結果の数を投票数の多い順に候補者の名前を上位順に並び変えたいのですが、VLOOKUPを使用しても上手くいきません。

関数は B6=VLOOKUP(C7,A2:B4,1,FALSE) と使用しても、結果が「#N/A」とでてしまいます。
各候補者の途中投票数を入力する度にB7~B9の候補者の名前を随時自動的に並びかえたいです。
誰か良い関数又は解決方を知りませんでしょうか?

  A   B    C    D   E 
1  TOTAL 1回目 2回目 3回目
2 A候補  80  20  50  10
3 B候補  86  25  50  11
4 C候補  77  15  50  12

6  順位  名前 獲得票数
7  1位  #N/A  86票
8  2位  #N/A  80票
9  3位  #N/A  77票

A 回答 (4件)

こんばんは!



方法は、いろいろあると思いますが1例を

  A   B   C   D   E 
1    TOTAL 1回目 2回目 3回目
2 A候補  80   20   50   10
3 B候補  86   25   50   11
4 C候補  77   15   50   12

6  順位  名前  獲得票数
7   1  式2  式3
8  式1   ↑   ↑
9   ↑   ↑   ↑

 セルA7 1を入力
 セルA8 式1 =IF(COUNTIF($B$2:$B$4,C7)>COUNTIF($A$7:A7,A7),A7,COUNTIF($A$7:A7,A7)+A7)
 (A9へ複写)
 セルB7 式2 =INDEX($A$2:$A$4,MATCH(C7,$B$2:$B$4,COUNTIF($A$7:A7,A7)-1))
 (B8:B9へ複写)
 セルC7 式3 =LARGE($B$2:$B$4,A7)
 (C8:C9へ複写)

 A7~A9 書式設定 → ユーザー定義 0"位"
 C7~C9 書式設定 → ユーザー定義 0"票"

こんなかんじでしょうか!
同点の場合も処理しているため多少長くなってしまいました!
    • good
    • 0
この回答へのお礼

こんばんわ。
返事が遅くなりすみませんでした。
まさに私が望んでた結果を出して頂き感謝しております。
今回愛の手を差し伸べて頂いた関数ですが、非常に複雑でしたが、言われるがままに打ちこんでみましたら、まさに望んでたものがでました。

また、分からないことがありましたら、助言を宜しくお願いします。

    from ganjyaman

お礼日時:2001/07/06 23:40

次のようにしてはいかがでしょうか。

表はタブ区切りになっているので整形してご覧下さい。
集計する表を、順位、得票数合計、候補者の順に並べます。
順位には、RANK(C3,$C$3:$C$5)のようにRANK関数を入れ、順位を表示させるようにします。

BCDEFG
2順位 TOTAL 1回目 2回目 3回目
3280A候補205010
4186B候補255011
5377C候補 155012

得票数順の表は、下のように配置し、名前と獲得票数にVLOOKUP関数を使います。名前の欄:VLOOKUP(B11,$B$3:$D$5,3,FALSE)
得票数の欄:VLOOKUP(B11,$B$3:$C$5,2,FALSE)
つまり、上の表でRANKを使って順位を求め、下の表ではRANKから得票数と候補者名を表示させるようにします。この場合、順位と獲得票数は数値である必要がありますので、1位、86票と表示したければ、表示形式を用いて表示を変更してください。また、この方法は上の表の行数が固定されている場合にのみ利用可能です。上の表の行数が変動する場合には、別の方法を考える必要があります。

10順位名前獲得票数
111B候補86
122A候補80
133C候補 77
    • good
    • 0
この回答へのお礼

こんばんわ。
今回はアドバイを頂き有難うございます。
yuhki_fさんから頂いた関数も利用できたのですが、行数変動があるため、私が完全に望んでいるものとより、少しりなかったです。
comvさんで頂いたものがまさに望んでいるものでした。
今回次点にはなってしまいましたが、また、機会ありましたら宜しくお願いします。
    from ganjyaman(P.S. 返事が遅くなりました。)

お礼日時:2001/07/06 23:48

これを、一つの関数で行うことは、無理ですね。


複数の関数を組み合わせる必要があるとおもいます。

ご希望の回答ではないのですが、
順位を求める関数に、RANK関数がありますので、
ご紹介しておきます。

=RANK(B2,$B$2:$B$4,1)
で、B2が、2という値がでます。
この数式をコピーすると、
B3が、3で、B1が、1という数字がでます。

あとは、このRANK関数を使った、「値」だけは、
昇順で並べ替えボタンで並べ替えられますけど。
(候補名含んで選択して、並べ替えは、できません。
また、列は別にしておかないと、並べ替えはできません。)

自動的にできる方法は、わかりません。
ごめんなさい。
    • good
    • 0

VLOOKUP関数の基本的な使い方がまちがっているのではないでしょうか?


私もあまり詳しくないのですが・・・


B6=VLOOKUP(C7,A2:B4,1,FALSE)

で指定すると、Aの列(正確にはA2~A4)にC7といっちするものがあるかどうかを検索するはずです。
したがって、Aの列には、C7(86)と一致するものがないため”N/A”となるのではないのでしょうか?

検索値が、範囲で指定した領域の先頭領域(例だとA列)に一致したものを検索するのがVLOOKUPの使い方のはずです。
    • good
    • 0

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