• ベストアンサー

VLOOKUPとMATCH関数

こんにちは、お世話になります。 =VLOOKUP($B3,$I:$N,MATCH(C$2,$I$2:$N$2)2,0),0) この数式に関して何ですが、 第一引数第二引数第三引数と続くわけですが、 VLOOKUPの中にMATCH関数が入ったりとだんだん細かくなってきてしまって、難しいのですが この関数の数式の処理を詳しく解りやすく教えて頂けないでしょうか? ご教示お願いします。

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

  • ベストアンサー
  • f272
  • ベストアンサー率46% (8023/17148)
回答No.2

=VLOOKUP($B3,$I:$N,第3引数,0) で入れ子になっているのは第3引数だけです。 そして第3引数はMATCH(C$2,$I$2:$N$2,0)です。 これはC$2="商品名"が,マスタテーブル表題$I$2:$N$2の何列目にあるかを探しています。答えは2列目ですね。 VLOOKUP関数では$B3をマスタテーブル$I:$Nの1列目から探して,2列目の値を戻します。だから商品Noが1であれば,"以下自粛のその先にあるもの"が返ってきます。

voltage999
質問者

お礼

回答ありがとうございます。

その他の回答 (4)

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

#4です。お礼に関して。マスタ側の列で検索すれば、今回作成するデータ側の列並びの順序は関係ないのではない?違うかな.A列の商品番号で、該当を探す索引は全てマスタの中の列の行で行うのでは?

voltage999
質問者

お礼

回答ありがとうございます。 確かに、関係ないですね(笑)今気づいた。 何だこの書籍、見当違いな事ばかり書いてあるかもしれない。

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

#3です。 こういう、ことだろう。 こういう説明が必要だろう。 マスタがI2:I100に、あるとする。 新たに、データを作る範囲は、I2からFx(不定)とする。 列にはA2セル以下、商品番号を入れる。<絶対必要 B,c列以右列を関数で採ってくる。 A列   B列  C列 1 A 11 4 D 44 3 C 33 2 B 22 ーー B2の式は =VLOOKUP($A2,$I$3:$M$100,2,0) 下方向に式複写 C2の式は =VLOOKUP($A2,$I$3:$M$100,3,0) 下方向に式複写 結果上記の通り。 この第3引数を、2や3や4・・を個別に指定せずに、 式を作って処理しよう、を作ろうとしたものが、質問の式と思う。

voltage999
質問者

お礼

回答ありがとうございます。 ですがちょっと違うかな やっぱり質問文には何をしようとしているかもいれないと 解らないですよね。 この文を載せていいものか解らなかったので 私のやろうとしていることは、 入力表とマスタの項目の並び順が違っている場合で 「入力表」と「マスタ」の項目の並び順が同じだったので 第三引数が2,3,4という連番になりだからCOLUMN関数が使えたんですが今回の場合、入力表とマスタの項目の並び順が違う場合VLOOKUP関数において正しい第3引数の数字を取得できないというのが趣旨でした。 それをVLOOKUP関数とMATCH関数でどのように処理しているのか知りたかったのです。

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

添付画像では、商品NOは、B2から以下に、表が始まっている。 VLOOKUPの式はB3($B3)と書いているが、すると、式を入れるのは、別のシートになるだろう。 式を入れるのは、どのシートの、どのセルか。 そういうことも、明確にせず、質問するとは。 大体VLOOKUP関数は有名な関数で、WEB解説も多い。わざわざ質問するまでもない関数。 ーー B3の指定で、列の参照を(B3セル指定で)相対化したいなら、その旨質問に明記すべきだ。素の場合でも$B$3にならないか? 考えずに質問しているように思う。

voltage999
質問者

お礼

回答ありがとうございます。 シートの方はダウンロードした物ですが うーん、合っているとは思うのですが。 あくまで$B3の1と、C$2の商品名で比較していますね シートの方もあっていると思いますし。 セルの方はC3から入れていますね。 私としたことが、数式で答えを入力した物をUPしてしまったので・・・大変申し訳ありません。

  • f272
  • ベストアンサー率46% (8023/17148)
回答No.1

=VLOOKUP($B3,$I:$N,MATCH(C$2,$I$2:$N$2)2,0),0) この式はエラーになります。何がしたいのですか?

voltage999
質問者

お礼

回答ありがとうございます。 え、エラーにはならないはずですよ?

voltage999
質問者

補足

あ、間違えました。 正しくは=VLOOKUP($B3,$I:$N,MATCH(C$2,$I$2:$N$2,0),0) ですね。

関連するQ&A

  • vlookupに、Indirect と Match 関数を組み合わせる

    vlookup関数で、検索値にSheet1(Book1)から、範囲は、Sheet2(Book1)のセルにある名前のついているSheet1(Book2), そして、列番号は、指定した名前とマッチするSheet1(Book2)の列番号から、導き出そうとしています。 ところが、Matchで指定した範囲は、Indirect内の関数として認識されないようで、結果が得られません。 たとえば、 Book1のA1~E1にタイトルが入っています。(Index, Title, Book, Author, Frequency) Book2には、 シート1: InputName シート2: Output シート2に以下の関数を入れてみましたが、うまくいきません。 ちなみに、VLOOKUPの列番号を Match関数の代わりに、5 とすると、結果オーライですが、Book1 の列順が変わっていることがあるので、Matchを使ってエラーを避けたいのですが、以下の関数のどこを直すべきでしょうか? =IF(ISNA(VLOOKUP(C2,INDIRECT("'["&InputName!$A$2&"]"& InputName!$B$2&"'!"&"$A$2:$E$1400"),MATCH("Frequency",$A$2:$E$2,0),FALSE)),0,VLOOKUP(C2,INDIRECT("'["&InputName!$A$2&"]"& InputName!$B$2&"'!"&"$A$2:$E$1400"),MATCH("Frequency",$A$2:$E$2,0),FALSE)) よろしくお願いします。

  • VLOOKUP

    こんばんは、お世話になります。 早速ですが、 本来VLOOKUP関数を使う場合(第一引数、第二引数、第三引数)となっています、そこで何ですが A B C D E F G    1 ■入力表    2 商品No 商品名  単価  生産者 最低発注単位 納品予定 3 1 以下自粛その先にある物。 4 4 5 5 6 2 I J K L M N 1 ■マスタ 2商品No   商品名                  単価 3 1  以下自粛のそのさきにあるもの。       12000 4 2  1分で話せ。全裸で。 9800 5 3  いつか成功するから会費を払え。 淫らな心で。 15000 6 4  前向きな怠惰と前向きな惰性 18000 7 まぁこんな感じで表があるのですが。 そこで質問なんですが、この後 =VLOOKUP($B3, $I:$N, 2,0) これだと同じ値が入ってしまいますが(2列目までしか見てないから) =VLOOKUP($B3, $I:$N,6,0) こうすれば6列まで見ることが可能だけど、余談なんですが ビジネスの現場では、このようなVLOOKUP関数の入力と第三引数の修正が50列にわたるケースもあるそうです。 そこで第三引数にも参照を使うのですが長くなりましたがここで質問ですが、 A B C D E F G    1 ■入力表  2 3 4 5 6  2 商品No 商品名  単価  生産者 最低発注単位 納品予定 3 1 以下自粛その先にある物。 4 4 5 5 6 2 Cの1列目に数字を入れるのですが、 =VLOOKUP($B3,$I:$N,C$1.0)と関数を入力することによって Cの一列目を参照するとあるのですが、 Cの一列目には先ほど入れた数字しかないのにそこを参照して なぜ元々も情報を参照することができるのでしょうか? ご教示お願いします。

  • MATCH関数について。

    いま、情報処理検定2級の勉強をしています。 そこでINDEX関数を用いる問題が出たので、INDEXとMATCHのネストを作りました。 =INDEX($C$20:$F$24,MATCH(G5,$C$19:$F$19,0),MATCH(H5,$B$20:$B$24,0)) こんな感じになりました。 でも、エラーが起きました。MATCH(H5,$B$20:$B$24,0))のところのセルH5には「1」とあり、B20:B24には「1回目」~「5回目」とセルに入力してありました。なので、一致しないからだと思いました。 そこで質問です。このような場合、どのようにすればエラーが起きないで戻り値が出るのでしょうか。 わかりにくい文章ですけど、教えてください。

  • VLOOKUP関数のコピーについて

    お世話になっております。VLOOKUP関数を違うセルにコピーするのですが、参照するセルが替わりません。。#N/Aエラーが出てしまいます。たとえば、=VLOOKUP(B24,M3:N21,2,FALSE)をコピーして、違うセルに貼り付けても、=VLOOKUP(B24,M3:N21,2,FALSE)。また、オートフィルでやると、参照範囲もずれてしまいます。上手にコピーする方法はないのでしょうか。よろしくお願いします。

  • VLOOKUP関数について教えてください。

    航空運賃の料金計算という問題をしています。 (1)行先番号と時期番号を入力すると、自動的に運賃が計算できる計算表を完成しなさい。 (2)さらに事前割引表を元に、割引ができる表に改めなさいという問題になります。 (1)はMATCH関数とVLOOKUP関数で、なんとかできたのですが(2)がさっぱりわかりません。 (1)の時点ではこんな感じで数式を入れています。 H       I        J 出発地   東京(固定です。) 行先番号            =MATCH(I5,C6:F,0) 時期 料金              =VLOOKUP(I4,C6:F33,J,FALSE) (B2:E4の形で横に表にしたかったのですが、上手くMATCH関数を入れられず横に新たに作って考えています。) *行先・金額の表はこのような形で入力しています。 B    C    D      E    F 行先  番号  通常期   多客期  閑散期 札幌  1   24050    25250   21500 沖縄  27   34400    40660   37660  時期分類表  番号 1 通常期 7/1~7/31、8/21~11/30、2/1~3/31    2 多客期 8/1~8/20、12/27~1/6    3 閑散期 12/1~12/26、1/7~1/31  事前割引表 4週間前 運賃50%引き       3週間前 運賃30%引き       2週間前 運賃22%引き (2)の問題をとくには、まずI5にいつの時期かを判定?する数式を入れないとダメなのでは?、と思うのですがわかりません。 ちょうど7つだしIFのネストは7つまでできたから、と思ったのですが7/1~7/31どう入力すればいいのかわからず挫折。 次にこの日付を全部入力横の列に番号を入力、日付を検索値にして1~3をVLOOKUPで引っ張り出せばと思ったのですが上手くいきません。 (検索地が日付で数値でないからでしょうか?) 4週間前というのは1月前と考えて、3週間前は3×7日と考えて21日と考えるのかな?と思ったのですが、そこまでしか思いつきませんでした。 すみませんがこの問題の解き方、教えてください。 どうぞよろしくお願いします。

  • EXCEL関数について。

    EXCEL関数について。 下記関数にて、値の取得を行うようにしましたが、 この関数使用時のエラー(#N/A)が 出ないようにする為の数式を教えていただけませでしょうか? 【現在の数式】 =INDEX('01'!$T$8:$W$14,MATCH($C$12,'01'!$S$8:$S$14,0),MATCH($G12,'01'!$T$7:$W$7,0)) この数式の内、最初のMATCH関数  MATCH($C$12,'01'!$S$8:$S$14,0) の中の S8~S14までのセルの間に参照値 C12 の値がない場合に、エラーが出ないように したいのですが、その数式を教えていただけないでしょうか?

  • 関数の値のVlookup

    下記のような表があり、"=VLOOKUP(H1,A1:B6,2,1)"のような結果を得たいと思っています ## H1セルには検索したい値を入れるようになっています。 しかしWeb上で調べたところ、VLOOKUP関数は値や文字列には使えるが数式には使えないようです。 そこで数式でもVLOOKUP関数と同じような結果を得られる方法がありましたら教えて頂けないでしょうか。 よろしくお願い致します。 | A | B | --------------------- 1|$E$3*H7*I7 | 1 | 2|$E$3*H7*I8 |0.9| 3|$E$3*H7*I9 |0.8| 4|$E$3*H7*I10|0.7| 5|$E$3*H7*I11|0.6| 6$E$3*H7*I120.5

  • VLOOKUP関数で「#N/A」が出てしまう。

    Aのファイルの中にあるコード(英数字8ケタ)の中から、Bのファイルにあるコードに一致しているものをVLOOKUP関数で探し当てようとしています。 Bのファイルに数式を入力しましたが、すべて「#N/A」が出てしまいます。 数式は間違っていません。 念のため、CとDという別なサンプルを作り同じ数式を入力してみたら、それはきちんとできました。 なぜAとBでは出来ないのか解りません。 考えられる原因は何でしょうか?

  • エクセルのIF関数とVLOOKUP関数について教えてください。

      A B C 1 A1 B1 C1 2 A2 B2 C2 ・ ・ ・ 上記のような表があり、セルX、Yに入力した値が2つの条件に合致した場合、セルZにC列の値を返すような数式を作っています。 たとえば、セルXの値がA1より小さく、かつ、セルYの値がB1より小さい場合にはセルZにC1の値を表示する、という数式を作りたいのです。 (ちなみにAn、Bn、Cnにはそれぞれ数字が入ります) =IF(AND(X<=A1,Y<=B1),C1,IF(AND(X<=A2,Y<=B2),C2,・・・ AND関数を利用してこのように数式を入れると、途中まではうまくいくのですが、引数が多いため途中からエラーが出てしまいます。 (引数の数は10個以上あります) IF関数とVLOOKUPを組み合わせればいいというところまではわかるのですが、どのように条件設定をすればいいのかがわかりません。 エクセル初心者で恐縮ですが、どなたか詳しい方いらっしゃいましたらご回答よろしくお願いいたします。

  • VLOOKUP関数について

    VLOOKUP関数について教えていただきたいのですが、 数式が、=VLOOKUP(D2,Sheet2!A1:B132,2)で、結果も(例、”顧客名”)と正しく表示されているのですが、実際のセルに表示されるのは関数の数式で結果が表示されません。なにか表示の方法があるのでしょうか。officeは2003で、OSはXPです。お分かりのかた力を貸してください。

専門家に質問してみよう