プロが教える店舗&オフィスのセキュリティ対策術

エクセルでINDEXの使い方について教えてください。

Sheet間で2つの項目がマッチする行の情報を取り出したいと考えています。

例としまして、
いろいろサイトを見ながら考えて以下の構文を使いましたが別の行の情報が取得されてしまいます。
=INDEX(Sheet1!$G:$G,MATCH(E2,Sheet1!$B:$B,0)+MATCH(D2,Sheet1!$C:$C,0))
(E2とD2の項目がマッチする行の情報”Sheet1!$G:$G”を取り出す)

どのようにするのがよいのでしょうか?
よろしくお願いします。

A 回答 (2件)

こんばんは!


INDEX関数の使い方ですが、根本的に違っていると思います。

INDEX関数は「INDEX」(列・行の配列の)
○行目・△行目の交差するセルを返す!という関数になります。

今回の場合、INDEXの配列はG列だけですので
Sheet1のB列でE2セルと一致する行番号 と Sheet1のC列でD2セルと一致する行番号 を加えています。
MATCH関数は「数値」を返しますので
仮に
>MATCH(E2,Sheet1!$B:$B,0)で「5」が返り
>MATCH(D2,Sheet1!$C:$C,0)で「10」が返った場合
範囲指定(今回はG列すべて)の15番目、すなわちG15セルの値が返ってしまうと思います。

実際にどのような表の配置になっているのかこちらでは判断できませんので
一般的なINDEX関数の使い方を説明しておきます。

↓の画像で左側がSheet1・右側がSheet2とします。
Sheet2のE4セルに
=INDEX(Sheet1!B2:F10,MATCH(D2,Sheet1!A2:A10,0),MATCH(E2,Sheet1!B1:F1,0))
という数式を入れています。

Sheet1のB2~F10の配列で行方向はD2セルのデータと一致する行・列方向はE2セルのデータと一致する列の交差するセル
すなわち画像ではSheet1のE5セルの「34」が返る!というコトになります。

※ 配列の範囲が1列・1行だけであればINDEX関数の
「行番号」もしくは「列番号」だけの引数を入力するだけで大丈夫です。

質問文から判断できるのはこのくらいです。
この程度でごめんなさいね。m(_ _)m
「エクセルでINDEXの使い方について教え」の回答画像2
    • good
    • 0

垢ぬけしませんが参照する側と参照される側の作業列を設けた方が確実のようです。



Sheet1 、Sheet2ともにJ列を作業列とします。
Sheet1のJ2に= B2&C2
Sheet2のJ2に= E2&D2
Sheet2のG列にSheet1のG列の内容を取り出すものとして
Sheet2のG2に =IF(ISERROR(INDEX(Sheet1!G:G,MATCH(J2,Sheet1!$J:$J,0))),"",INDEX(Sheet1!G:G,MATCH(J2,Sheet1!$J:$J,0)))

各関数式は、下へ必要数ドラッグ

お示しの関数式では、目的のデータが例えば2行目にある場合、2+2=4で4行目が参照されることになります。いずれにしてもB列C列を単独にMATCHさせる方法では、列中に重複データがある場合は対応できないようです。

この回答への補足

回答ありがとうございます。
検索側のデータが重複していると正しく値が返せないということなんですね?
サンプルで簡単なデータを作って確認してみましたが、上記関数ではやはり違う値をもってきていました。

もう少し考えてみます。

補足日時:2014/08/16 22:11
    • good
    • 0

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