- ベストアンサー
VLOOKUPを使用して、随時並び変えたいのですが・・・
選挙投票数の数を随時入力し、その途中結果の数を投票数の多い順に候補者の名前を上位順に並び変えたいのですが、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 5 6 順位 名前 獲得票数 7 1位 #N/A 86票 8 2位 #N/A 80票 9 3位 #N/A 77票
- みんなの回答 (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 5 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"票" こんなかんじでしょうか! 同点の場合も処理しているため多少長くなってしまいました!
その他の回答 (3)
- yuhki_f
- ベストアンサー率32% (32/99)
次のようにしてはいかがでしょうか。表はタブ区切りになっているので整形してご覧下さい。 集計する表を、順位、得票数合計、候補者の順に並べます。 順位には、RANK(C3,$C$3:$C$5)のようにRANK関数を入れ、順位を表示させるようにします。 B C D E F G 2 順位 TOTAL 1回目 2回目 3回目 3 2 80 A候補 20 50 10 4 1 86 B候補 25 50 11 5 3 77 C候補 15 50 12 得票数順の表は、下のように配置し、名前と獲得票数にVLOOKUP関数を使います。名前の欄:VLOOKUP(B11,$B$3:$D$5,3,FALSE) 得票数の欄:VLOOKUP(B11,$B$3:$C$5,2,FALSE) つまり、上の表でRANKを使って順位を求め、下の表ではRANKから得票数と候補者名を表示させるようにします。この場合、順位と獲得票数は数値である必要がありますので、1位、86票と表示したければ、表示形式を用いて表示を変更してください。また、この方法は上の表の行数が固定されている場合にのみ利用可能です。上の表の行数が変動する場合には、別の方法を考える必要があります。 10 順位 名前 獲得票数 11 1 B候補 86 12 2 A候補 80 13 3 C候補 77
お礼
こんばんわ。 今回はアドバイを頂き有難うございます。 yuhki_fさんから頂いた関数も利用できたのですが、行数変動があるため、私が完全に望んでいるものとより、少しりなかったです。 comvさんで頂いたものがまさに望んでいるものでした。 今回次点にはなってしまいましたが、また、機会ありましたら宜しくお願いします。 from ganjyaman(P.S. 返事が遅くなりました。)
- himehime
- ベストアンサー率37% (133/354)
これを、一つの関数で行うことは、無理ですね。 複数の関数を組み合わせる必要があるとおもいます。 ご希望の回答ではないのですが、 順位を求める関数に、RANK関数がありますので、 ご紹介しておきます。 =RANK(B2,$B$2:$B$4,1) で、B2が、2という値がでます。 この数式をコピーすると、 B3が、3で、B1が、1という数字がでます。 あとは、このRANK関数を使った、「値」だけは、 昇順で並べ替えボタンで並べ替えられますけど。 (候補名含んで選択して、並べ替えは、できません。 また、列は別にしておかないと、並べ替えはできません。) 自動的にできる方法は、わかりません。 ごめんなさい。
- kotetsu123
- ベストアンサー率66% (2/3)
VLOOKUP関数の基本的な使い方がまちがっているのではないでしょうか? 私もあまり詳しくないのですが・・・ B6=VLOOKUP(C7,A2:B4,1,FALSE) で指定すると、Aの列(正確にはA2~A4)にC7といっちするものがあるかどうかを検索するはずです。 したがって、Aの列には、C7(86)と一致するものがないため”N/A”となるのではないのでしょうか? 検索値が、範囲で指定した領域の先頭領域(例だとA列)に一致したものを検索するのがVLOOKUPの使い方のはずです。
お礼
こんばんわ。 返事が遅くなりすみませんでした。 まさに私が望んでた結果を出して頂き感謝しております。 今回愛の手を差し伸べて頂いた関数ですが、非常に複雑でしたが、言われるがままに打ちこんでみましたら、まさに望んでたものがでました。 また、分からないことがありましたら、助言を宜しくお願いします。 from ganjyaman