• ベストアンサー

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

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

  • pe-
  • お礼率52% (71/134)

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

  • ベストアンサー
  • 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/17068)
回答No.1

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

関連するQ&A

  • VLOOKUP の検索値が存在しない時の処置

    XP,2007ユーザーです。 1) A、B両店は、毎日の売上高を、営業日付と売上高でそれぞれの売上表で記録しています。 2) 営業日は店ごとに異なるので、一方の店で記録されていない日付もあります。 (別々の表にしなければならない事情があるものですから・・・・・・・) 3) 指定した日付の両店舗の売上高合計を求めたいのです。    そこで、合計売上表上で、VLOOKの検索値に調べたい日付を指定して、FALSEで得た値の和を取っています。   すると、両店共にその日に営業していれば(両表に日付が記載されていれば)答えが求められるのですが、記載されていない日付を検索するとエラーが出ます。   そこで=IF(iserro(LOOKUP関数,””,lookup関数)とやりましたが駄目でした。  説明が拙くて申しわけありませんが、よろしくご教示ください。大変困っております。

  • Accessでの売掛金の管理に関して

    Access売掛金の計上及び入金の管理行いたいと考えていますが 下記のようなことは実現できますでしょうか。 (1)得意先 (2)4月分売上 (3)入金日付 (4)入金金額 (5)4月売掛残高 (6)備考         (3)入金日付 (4)入金金額 (5)4月売掛残高 (6)備考        (3)入金日付 (4)入金金額 (5)4月売掛残高 (6)備考 (2)5月分売上 (3)入金日付 (4)入金金額 (5)5月売掛残高 (6)備考 (2)6月分売上 (3)入金日付 (4)入金金額 (5)6月売掛残高 (6)備考    : (2)3月分売上  (3)入金日付 (4)入金金額 (5)3月売掛残高 (6)備考                    売掛残高合計 ※(2)の各月売上は期首から期末まで順番に表示される ※(3)と(4)の入金関連項目に関しては消しこみ対象の各月売上の行に表示される。  例えば3月分売上が6月に入金があった場合は入金関連項目は6月分売上の行ではなく  3月分の行に表示される。 ※入金は通常のサイトで回収される場合以外に一部入金(例えば3月分は3回にわたって  入金されている。)、過剰入金、過小入金等があるので各月の売上が1行であるのに  対して入金関連項目は複数行にわたる。⇒詳細に関して備考欄で説明を設ける。 ※(5)の各月残高はあくまで各月の売上の回収状況であって得意先ごとの残高総合計は  売掛金残高合計として最終行等に表示されるようにする。 マスターとして ■得意先マスター (1)得意先コード(2)得意先名 ■部署マスター  (1)部署コード(2)部署名 ■売上科目マスター (1)科目コード(2)科目名 ※上記の表の各月売上の詳細として科目ごとに表示することができるかどうか。 (1)売上1 (2)売上2 (3)売上3…(4)消費税 といった具合に各月の合計値としてだけでなく詳細表示が可能かどうか。 上記の表は各科目の合計値となっている。 とりあえず他にも実現したいクエリがありますが 話が複雑になってしまいますので 上記のようなことがAccessで実現可能なのかどうか その場合どのような方法があるのかどうか。 その方法を行うにはどの項目の知識が必要なのかどうか。 何かヒントでも構いませんので多くの方のアドバイスを頂けたらと思います。 大変お手数ですが宜しくお願いします。  

  • RANK関数の基本?

    教えてください。 順位をつける表があります。(元の問題は、「合計点をもとに成績の順位を求めましょう」です) RANK関数をつかったのですが、=Rank(数値、セル範囲、順序)と なりますよね。 で、答えを見ると順序が、省略されています。(0は省略できますよね) 問題には、昇順とか、降順は全く表示されていません。 これは、順位をつける関数は、順序は降順(点数(数値)の高い順でつける)でつけるのが当たり前という概念に基づいているからなんでしょうか。 宜しくお願いいたします。

  • エクセル:vlookup関数でこんなことをしたいのですが・・・

    よろしくお願いします。 vlookup関数のを使って次のような集計をしたいと思っています。 (1)【一月の集金】…挿入・名前の定義で「一月」とつけます。 山田太郎 3000 山田花子 2000 海山次郎 1500 ・・・以下150名ほど。2月から12月までも「別シート」で同じように作られています。1月から12月の氏名は同じ人間もいれば違うのもあり、ばらばらです。氏名コード化等されていません。 (2)【集計】      【1月】 (氏名)   A ...................B 1 山田太郎 =vlokkup(A1,一月.2,false)  2 海野五郎 ・・・ 3 ・・・・ 合計  (一月集金額合計) 同様に、集計欄の横に、2月、3月としていきます。 ここで、この例では、1月の山田花子が集計欄の氏名にもれています。当然、集計表で正確な合計がでません。ここでやりたいのが、「1月の表の山田花子が集計表でもれているよ」いうようなチェックです。たとえば、1月の表の山田花子に色がつくとか・・・ むずかしいことでしょうか?どうかご指導ください。 お待ちしています。人数が各月150人程度で12ヶ月のチェックですから、手作業チェックが大変なのと急いでいるので、お助けをお願いしたいのです。 どうかよろしくお願いいたします。

  • VLOOKUPで名前が使えない

     XP,2007pack3ユーザーです。 表に名前を付け、VLOOKUP関数の「範囲」の代名詞として使いたいと思います。 セル上にVLOOKUP の要素を記入してゆき、「範囲」の所で名前ボックスを開きますと、以前に使った関数が羅列され、表の名前が表示されません。 関数を記入していないときは名前が表示されるのですが、いざVLOOKの要素を書き込もうとすると逃げてしますのです。 仕方がないから、表の範囲を反転表示で指定してやっておりますが、どうも納得がゆきません。 そこで教えていただきたいのです。 Q1 関数要素記入時に、お名前ボックスから表の名前を使う方法 Q2 お名前ボックスに既往の関数名を入れない方法(私には、お名前ボックスに既往関数の表示は 有害・不要です。) 以上、よろしくお願いします。

  • エクセル vlookup 関数?

    Excelのバージョン:[2002]  今表を作っていまして、 sheet1に、 A B C 売上 100 200 150 ・・・・ 粗利 30 50 35 ・・・・ 経費 10 40 10 ・・・・ 利益 20 10 25 ・・・・ 粗利ランク 3 1 2 ・・・・ 貢献度ランク 2 3 1 ・・・・ 上記の表を作り、sheet2に、 粗利ランク 氏名 貢献度ランク 氏名 1 B 1 C 2 C 2 A 3 A 3 B ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 上記のようにランキング表を作りたいのですが、 どの関数で、どのように作れば楽に手間なくできるでしょうか? お知恵を拝借したいと思います。 よろしくお願い致します。

  • 関数教えて! EXCEL 検索 抽出 重複データ

    単純なVLOOLUPならわかるのですが、下記のような表はどのような関数をつかえばよいのでしょうか? ーーーーーーーーーーーーーーー 「1.元となる表」;SHEET名「店ごとの売上げ順位&ボーナス該当有無」※列にはA、B、C、行には1、2、3と名前を付けています。   A     B      C          1 売上げ順位 店名    ボーナス該当有無  2 1     タリーズ      有り 3 2     スタバ       有り 4 3     ベローチェ     有り 5 4     ドトール      なし     ーーーーーーーーーーーーーーー 「2.元になる表」;SHEET名「社員表」   A     B      C     D 1       店名     社員名  社員番号 2 1     タリーズ   嶋田   01 3       タリーズ   田中   02 4 2     スタバ    野村   05 5       スタバ    谷口   06 6 3     ルノアール  井上   03 7       ルノアール  伊藤   04 8 4     ベローチェ  佐野   07 9       ベローチェ  熊田   08       ーーーーーーーーーーーーーーーーー 「2.作成したい表」;SHEET名;「売り上げ順位順店別ボーナス該当者リスト」   A     B      C          D 1 売上げ順位 店名    ボーナス獲得社員名  社員番号 2 1     タリーズ      嶋田     01 3       タリーズ      田中     02 4 2      スタバ      野村     05 5       スタバ      谷口      06 6 3     ベローチェ    佐野      07              7       ベローチェ    熊田      08

  • アクセスの機能について

    アクセスで、点数の高い順に順位付けをする方法ありませんか? エクセルでは、rank関数で比較的簡単に出せるんですが,アクセスではrank関数がつかえない(?)みたいなもので。。。

  • RANK関数で順位付けする方法

    お世話になります。Oracle初心者です。RANK関数による順位付けについて悩み、検索してもわからず困っております。 次のような表tbがあります。 数値,順 70 10 30 この「順」のカラムに順位を付けて 数値,順 70,3 10,1 30,2 としようとしています。SELECTなら SELECT 数値,rank() over (order by 数値 desc) from tb; が成功します。これでupdateする場合、 (rank() over (order by 数値 desc))をした値を update tb set 順= とすればよいと思うのですが、うまくいきません。 PL/SQLを使わず、SQLでRANK関数を使って順位付けするにはどのようにしたらよろしいでしょうか。 勉強不足だと思い、申し訳なく思います。何卒よろしくお願いいたします。

  • エクセル関数について質問です。

    エクセル関数について質問です。 2つのファイルをリンクさせ、VLOOKで商品名を表示させたいのですが、うまくいきません。 (1)コード管理.xls コード   商品 12094105  ○○○ (2)売上管理.xls コード   商品    売上 12094105  VLOOK式  1,000 流れとして ・(1)ファイルでコードを作る ↓ ・(2)売上管理ファイルに、(1)で作ったコードを入力 ↓ ・商品名にVLOOKでコードで検索をかける数式をいれ表示 VLOOKの式はよく使っており、別件では問題なくできます。 しかし、このコードを使って式を組むとどうしてもエラーになります。 表示形式など関係あるのでしょうか?

専門家に質問してみよう