• ベストアンサー

どこがちがうのでしょうか?

INDEX関数とMATCH関数を使っているのですが違う数字がでてきます。 シート1のA1とA2のセルに数字をいれ、その数字がシート2のA1からA100まで入っている数字、シート2のB1からB100まで入っている数字に合えばシート2のC1からC100までに入っている数字がシート1のA3にでるようにしてます。 (1)例えばシート2のA7,B7の数字を入れた場合C7の数字が出るのですがA8、B8より下の数字を入れた場合、0が出たりA7の数字のまま変わらなかったりします。 (2)もうひとつ、シート2のA7,B7の数字を入れた場合C7の数字が出てほしいのですがC20など全然合ってない数字がシート1A3にでます。 範囲など注意深く見たのですがわかりません。 説明不足で、その上初歩的なミスだと思いますがよろしくお願いします。

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

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

>INDEX関数とMATCH関数を使っているのですが違う数字がでてきます。  ⇒A1とA2の複数条件(and条件)なのだから上記の関数では検索できないと思います。   MATCH関数ならば、A1&A2の結合文字列、シート2に列を追加してA列&B列の結合文字を検索するなら可能と思います。   複数条件の検索はSUMPRODUCT関数が一般的ではないでしょうか。   =INDEX(Sheet2!C:C,SUMPRODUCT((Sheet2!A1:A100=A1)*(Sheet2!B1:B100=A2)*ROW(Sheet2!A1:A100)))

20r
質問者

お礼

ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

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

質問者の質問がわかりにくい。 シート1で第1条件をA1 シート1で第2条件をA2 に入れていtるらしい。 シート2で 第1条件をA列で一致 且つ「同じ行」(ここが大事。質問者もこれを考えているのでは?)のB列で一致した行を1つ(2つ以上見つけるのはさらに難しい)見つけるのは難題なのを知らないのだろうか? シート2の作業列に、A列とB列の結合列でも作らないと難しいのだ。結合列を作ればVLOOKUPで検索できる。 だい1引数もシート1のA1セルとA2セルの結合値で探す。 数字などのとき1と12と11と2が同じになるが素に手当ては考えておく必要がある(略) ばらばらでも良いとなると質問の体をなさないのでありえないでしょうが。 基本的には フィルタオプションの設定 データベース(SQLなど) VBAで検索を繰返す など使わないとうまく行かない例だと思うので、初心者にたやすく出来るものではない。。

20r
質問者

お礼

ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • chie65535
  • ベストアンサー率43% (8536/19407)
回答No.1

MATCH関数の「照合の型」に「0」を指定していますか? 照合の型を省略した場合、検索されるデータは昇順ソートされていなければならず、また、一致していないデータ位置が返される事があります。 また、照合の型を省略したにも関わらず、検索されるデータが昇順ソートされていない場合、不定な値が返されます。 (1)も(2)も「照合の型に0を指定し忘れている場合」や「照合の型が0でないのにデータを昇順ソートしていない場合」に起きる症状です。

20r
質問者

お礼

ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 提示された計算式の動作結果の報告と質問

    nishi6さんへ 9/17の回答ありがとうございます。 修正した計算式を「コピー」し「貼り付け」を行い、動作を確認しました。 目的通りの結果が得られたことをご報告します。ありがとうございました。 「A4セル」に入力する計算式がポイントですね。計算式は、C列の検索開始行が見事に検索した次の行からになっています。感心しました。 「IFERROR]関数は今まで使ったことがありませんでした。また「INDIRECT」関数の有用性を少しだけ知ることが出来ました。 質問事項 1. A4セルに入力する計算式の中でIFERROR(A3+MATCH........で 確認します。 INDIRECT関数の内容は、Sheet10のC9:C189 MATCH関数の内容は、A$1=9をC9:C189の範囲で完全一致で該当するものを検索すると、Sheet10のC17が該当する。C17はA列のNo.16に該当する。 A3+の意味するところは何ですか?わかりません。 2. B3の入力式においてわからないことがあります。 2-1. INDEX(Sheet10!$B$2:$B$189,A3,1)<>"",はIF関数の論理式ですよね。 2-2. <>"",のあとのINDEX(Sheet10!$B$2:$B$189,A3,1)は論理式がTRUEの場合の処理ですよね。 2-3. 論理式の( )の後の<>"",の意味は何ですか?私は今までこの様な記述形式は目にしたことがありませんでした。INDEX関数による検索では、数字や文字が何もない(空白)と言う様な意味ですか? いつまでもお手数をおかけして申し訳ありません。

  • エクセル 画像をVLOOKUPみたいに出したいです

    https://www.forguncy.com/blog/20170818_vlookup_picture を参考に INDEXとMATCH関数を使用し作成しているのですが、、どうもうまくいきません。 シート2に、 A列・・品名1 B列・・品名2 C列・・画像 D列・・金額 シート4にVLOOKUPで、セルA2に品名1、セルB2に品名2、セルD2に金額、は完璧に出るのですが、セルC3に画像だけどうも出ません。 名前の定義で”写真”と名前を付け、参照範囲に以下をやりました。 =INDEX(Sheet2!$A$2:$A$10,MATCH(Sheet4!$A$2,Sheet2!$C$2:$C$10,0)) セルC3には、#N/Aとでます。 初心者です。難しいことはできません。 ご教授お願いします。

  • 関数式教えてください。

    関数式教えてください。 シート上に2つの表がありますA・BとしてAの表の数字をBのシートの範囲から値をもとめAシートのセルに出します。Bのシートは1.000~2.000は1500 2.000~3.000は1650など数字範囲があります ○~○の範囲はたくさん あります。 

  • エクセルの名前の定義について。

    ご覧いただきありがとうございます。 エクセルの名前の定義についての質問です。 (1)【sheet1】 A2:A6に『aa』、 B2:B10に『bb』、 C2:C6に『cc』という名前を付けたとします。 ちなみにそれぞれのセルには文字列が入力されています。 (名前の定義の《範囲》はブックではなく、sheet1) (2)【sheet2】 B2:D6に『aa』、 B7:D15に『bb』、 B16:D20に『cc』と、sheet1と同じ名前を付けました。 それぞれB列・C列・D列には数字が入力されています。 (名前の定義の《範囲》はブックではなく、sheet2) ちなみにA列には、sheet1に入力されている文字列と同じものが入力されています。 A2:A6にはsheet1で『aa』と名前をつけた範囲と同じ文字列。 A7:A15にはsheet1の『bb』と同じ文字列。 A16:A20には『cc』と同じ文字列です。 ここからが本題です! (3)【sheet3】 A2に何らかしら関数を入れて、【sheet1】で作った名前(aaやbbやcc)が1つ表示されるようにしたとします。 そしてB2には、A2で表示された名前の中の文字列が1つ表示されるようにします。 (例えばA2に『aa』と表示されたら、B2には◯◯) 更にC2には、B2に表示された◯◯という文字列を使って、【sheet2】の名前『aa』の中のB列と、A列にある◯◯とが交差するセルに入力されている数字(図でいう(5))を表示させる関数を入力したいのです。(INDEXやINDIRECT、MATCH関数など…) 他に例えば、A2に『bb』(sheet1の名前)、B2に★★と表示されたら、C2には【sheet2】の名前『bb』の中のB列と、A列にある★★が交差するセルに入力されている数字を表示させたいです。 同じように、今度は、D2には、B2に表示された◯◯という文字列を使って、【sheet2】の名前『aa』のC列と、A列にある◯◯の交差するセルに入力されている数字を表示させたいです。 長々とややこしくてすみません… 説明分かりますでしょうか?? つまりは【sheet3】のC2・D2・E2に入力する関数が知りたいです。 自分なりに関数を入力してみたのですが、A2で表示された名前がsheet1での名前なので、sheet2の情報を引き出す事が出来ません。 わざわざsheet1とsheet2でシートを分けたのは、同じシート内で同じ名前が付けられないと思ったからです! どなたか分かりましたら教えて下さい! どうぞよろしくお願い致します。 ※ちなみに、貼付した図の『・』は以下省略の意味で使ってます。

  • Excel別シートの数字

    よろしく御願い致します Excel2007です 例えば、シート1のA2に数字が入っています(100) この数字をシート2のC7(90)にシート2のB2(10)を引いた数字を入れたいのですが 関数は如何すれば良いでしょうか、文章では解りずらいので 例 シート1のA2セル(100)-シート2のB2セル(10)=シート2のC7に入る数字(90)

  • 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)) よろしくお願いします。

  • エクセル IF関数

    こんにちは。よろしくお願いします。 添付のエクセルシートB列に A列の数字が5より小さい数字はそのまま、5より大きい数字の場合はすべて5 (セルB2は1、B3は2・・・セルB6~B10まではすべて5)となるような関数をお教えください。 勉強不足ですみません。よろしくお願いいたします。

  • EXCELの関数で別のシートからデータを取り出す方法について

    こんばんは。 excelの関数で次のようなことができますか? sheet1 A     B   C 123 125 122 sheet2 A    B    C     D 122            りんご 123           みかん 125            バナナ 上記のようなデータがsheet1とsheet2にあります。 sheet1のC列にA列のセルの番号と対応した商品を sheet2のA列とD列に対応データから引用できますか? (となりに並んでいないデータです。) 関数的にはvlookup,index,matchとかを使うとよさそうですが うまくいきません。 解決方法を教えてください。 よろしくお願いします。

  • エクセルの質問です。

    シート1でセルA2の数字が1~5の場合シート2のB3に記述される シート1でセルA3の数字が6~9の場合シート3のB4に記述される このような場合どういった関数を使うのでしょうか? 何卒よろしくお願いいたします。

  • excel index関数?changeイベント??

    作者不明のため、教えていただきたいのですがお願いします。 シートが4つほどあり、index関数でデータを5つめのシートで集計しています。 集計シート例:  A  B C D E F G H ・・・ 1   【ここにドロップダウンのボックス?があります▼】 2   あ い う え ・・・ 3●● 1 1 2 2 ・・・ 4△△ 2 2 3 2 ・・・ 5□□ 1 1 1 1 ・・・ ・ ・ ●●シート例:  A  B C D E F G H ・・・ 1   あ い う え ・・・ 2AA 1 1 1 1 ・・・ 3BB 0 1 1 1 ・・・ 4CC 1 2 2 2 ・・・ あいうえ項目が各シートにあり、集計シートでドロップダウンリスト(リストの下のセルB1には数字の割り当てがあります)からAAを選ぶと各シートからデータを引っ張ってきて(index関数がB1の数字を読み取ります)、各シートのデータが集計されます。 BBやCCと選んでも簡単に集計してくれるので重宝していたのですが、 これを応用しようと新規ブックで似たものを作り、 index関数(例:=IF((INDEX(●●!$B$2:$H$10,$B$1,1))="","*",INDEX(●●!$B$2:$H$10,$B$1,1))) ※列番号も右セル(あ→い→う・・・)にいくごとに増えていきます。 もコピーしましたが「#REF!」となって集計してくれません。 元のブックを開いてドロップリストを右クリック→マクロの登録をみるとマクロ「ドロップ1_change」という登録が見えますが、マクロを調べても表示は Sub ドロップ1_Change() End Sub しかでてきません。 なにも入っていないのになぜ動くのでしょうか? また他のブックではなぜ「#REF!」となるのでしょうか。 質問もどうしていいかわからないためわかりにくいかと思いますが、教えてください。この説明で不足している場合はご連絡下さい<(_ _;)>

専門家に質問してみよう