• ベストアンサー

VLOOKUPで左端に検索したいものが無い場合

表1 順位だけ5位まで入っています ┌────┬────┬──┐ │社員コード│売上合計│順位| ├────┼────┼──┤ |     |     |  1| ├────┼────┼──┤                     :       : 表2 ┌────┬────┬────┬────┬────┐ │社員コード│〇月売上│×月売上|売上合計|備考エリア| ├────┼────┼────┼────┼────┤ |   101|  ----|  ----| ---|    | ├────┼────┼────┼────┼────┤        :        : 社員コードと各月売上、合計がデータとして入っていて、備考エリアには自分で何かを入れてよくて、最終的に表1の 社員コードと売上合計を、売上合計が高い順に(順位の列に沿って)表2から拾って表示させたいのですが、 私がやってみたのは備考エリアにRANK関数で売上合計の順位を出して、表1の社員コードをVLOOKを使ってやろうと思ったのですができませんでした。 何かいい方法はありませんでしょうか?? 表を書き換えたり別の場所へ置き換えたりしないでの方法でできればお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • e30653
  • ベストアンサー率28% (32/114)
回答No.2

こんにちは 表2から売上合計順に表1に抽出するのであれば、下記方法である程度、実現できます。 ただし、表の書き換えができないため、売上合計に同値があった場合、正しく抽出できません。 表2の備考エリアには社員コードを記入。 表1の売上合計欄には下記関数を入力します。 =LARGE(表2の売上合計の範囲,表1の順位) 表1の社員コード欄には下記関数を入力します。 =VLOOKUP(表1の売上合計,表2の売上合計と備考エリアの範囲,2,0) 以上

pe-
質問者

お礼

回答ありがとうございました。その通りにやったら出来ました。 備考エリアには社員コードを入れるべきだったのですね。 勉強になりました。

その他の回答 (4)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.5

こんにちは。maruru01です。 表2が、Sheet1に、    A     B 1 社員コード 売上合計 2  101    1000 3 ・・・・・ とあるとします。 表1がSheet2に、    A     B    C 1 社員コード 売上合計 順位 2 ・・・・・ とある場合、Sheet2のB2に、 =INT(LARGE(Sheet1!$B$2:$B$11+(1/ROW(Sheet1!$B$2:$B$11)),ROW(1:1))) と入力して、[Ctrl]+[Shift]+[Enter]で決定します。 (数式の両端に「{}」が付いて配列数式になります。) さらにそれを、B6までコピーします。 次にSheet2のA2に、 =INDEX(Sheet1!$A:$A,1/(LARGE(Sheet1!$B$2:$B$11+(1/ROW(Sheet1!$B$2:$B$11)),ROW(1:1))-B2)) と入力し、同様に[Ctrl]+[Shift]+[Enter]で決定して、配列数式にします。 さらにそれを、A6までコピーします。 そしてSheet2のC2に、 =RANK(B2,$B$2:$B$6) と入力して、普通に[Enter]で決定します。 (配列数式ではありません。) そしてこれをC6までコピーします。 これで、売上合計が同点の場合も表示出来ます。 (売上合計が同点の場合は、表2の上から順になります。) 表1の順位も、同点の場合は同じになります。 (1、2、3、3、5という感じ) なお、表2の売上合計の列位置やデータ数は、適宜変更して下さい。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.4

表1の範囲はタイトルを含めて A1:C6 表2の範囲はタイトルを含めて F1:J6 とします。表2の備考エリアに RANK で順位を付けて セルA2に =INDEX($F$2:$J$6,MATCH($C2,$J$2:$J$6,0),1) セルB2に =INDEX($F$2:$J$6,MATCH($C2,$J$2:$J$6,0),4) でも可能かと思います。 #2さんの回答同様に同順位だと問題ありますが。。 それより表2の備考に上から連番を振り、売上合計で並び替えて上位5名の必要部分を表1にコピーしてから、備考の連番で並びを戻す。 表1と表2の位置や行が同じなら記録マクロでも出来るのでは?

  • nihonjinn
  • ベストアンサー率39% (79/200)
回答No.3

検索列が左端に無い場合 例えば検索列がB1:B5,抽出する値がA1:A5にあり、検索値がC1にあるとすると =INDEX($A$1:$A$5,MATCH($C$1,$B$1:$B$5,0),1) という式でVLOOKUPの代わりに検索することができます。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

(1)表1に引いてくるのか、表2に引いてくるのか 表1-->表2なのか 表2-->表1 (2)共通項は表1、表2で何でしょうか。 (3)何(どの項目)を引っ張ってくるのですか。 (4)(表1または表2の)どこへ引っ張ってくるのですか。