• ベストアンサー

2列共に値が一致したら、別シートのその行の列の値

シート1の$G列の値と"all"シートの$I列の値が同じであり、かつシート1の$H列の値と"all"シートの$J列の値も同じである場合、 対応する行の"all"シートの$G列の値をシート1のセルに代入する為、 下記の関数式を使ってみたのですが、全ての行で『#VALUE』のエラーが出ました。 =INDEX(all!$G:$G, MATCH($G2&$H2, all!$I$2:$I$540&all!$J$2:$J$540, 0)) シート1は2行以降に値が入っています。allのシートの最終行は540行です。行は今後増える可能性があります。 allシートの$I列と$J列の値は同じ値が入っている行がありますが、最初にヒットした行のall"シートの$G列の値をシート1のセルに代入したいです。 こんな条件でも関数式で抽出は可能でしょうか? お分かりの方がいらっしゃいましたら、ご教示頂けましたら大変助かります。

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

  • ベストアンサー
  • SI299792
  • ベストアンサー率48% (720/1491)
回答No.1

多分、Excel2019 以前だと思います。 配列数式にするか、又はINDEX を付けるかです。 また、検索範囲が2行らなので+1して抽出位置を合わせる必要があります。 具体的には、 =INDEX(All!$G:$G,MATCH($G2&$H2,INDEX(All!$I$2:$I$999&All!$J$2:$J$999,),0)+1)

nnirosan
質問者

お礼

早速のご教示、誠にありがとうございました。関数式は一発で値を代入する事が出来ました。また、自分のタイプミスも、代入した値から見抜く事が出来ました。 関数式、理解出来ました。今後も便利に使わせて頂きます。感謝です。

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

関連するQ&A

  • 別シートの行を選択し対象列を転記するマクロ

    シート2のA~F列までデータがあります。 行数は10,000行です。(月ごとに100行くらい追加されます。) A列は項目がNO.で半角数字が連番で入力されてます。 セルA2→1 セルA3→2 セルA4→3 . . . セルA10000→9999 セルA10001→10000 という感じです。 シート1の セルI9に番号を入力すると シート2のその番号の行のB~F列の値を シート1のJ9~N9列に転記したいです。 例えば シート1のセルI9に100と入力したら、 シート2のA列が100と入力されているセルはA101ですから 101行目となります。101行目の各列の値を転記します。 ↓ シート1のセルJ9にシート2のセルB101の値を転記 シート1のセルK9にシート2のセルC101の値を転記 シート1のセルL9にシート2のセルD101の値を転記 シート1のセルM9にシート2のセルE101の値を転記 シート1のセルN9にシート2のセルF101の値を転記 シート1もシート2もセルの書式設定は標準。 B,E,F列は半角英数字の組み合わせで C,D列は半角数字のみです。 たまにF列に空白がある行があります。 B,F列は数字のみの場合もあります。 B,C,D,F列は数字のみの場合 「数値が文字列として入力されています」 となっています。 マクロで行いたいのですが記述そのものを教えてください。

  • エクセルで別シートの値を取得したいです。

    エクセルで質問があります。 別シートからセル値を取得したいです。 ただ、セル番地は行番号、列番号で指定し、 行、列番号はセルに入力してある値を使いたいです。 例 Aシート(値格納シート) B1セル値=1000 -------------- Bシート(値取得シート) A列=行番号入力 B列=列番号入力 C列=Aシートの取得関数 A2セル値=1 B2セル値=2 C2セル=1000(取得値) C2セルの関数に、A2とB2の値を使って Aシートのセル値を取得したいです。 よろしくお願いします。

  • 基本の別シートの値と一致・不一致のチェック

    2つ目のシートのEセルとGセルの値が、1つ目のシートのAセルとQセルの値と一致しているかチェックをしたいのですが、 実際にどのような式を入れたら良いのかわかりません。 大変困ってしまっています。 何方か、ご教示頂けると大変幸いです。 1つ目のシートには基準となる値が入っています。2つ目のシートは入力されたデータが入っています。 比較するセルの値は1つ目のシートは空白は入っていませんが、2つ目のシートは、空白や全く違った値が入っています。 結果は、以下のように出力させたいです。 2つ目のシートのEセルの値と1つ目のシートのAセルの値が一致し、1つ目のQセルの値と2つ目のGセルの値が一致した時、2つ目のシートの最後の列へ『OK Aセルの値、Qセルの値』、 2つ目のシートのEセルの値と1つ目のシートのAセルの値は一致したが、1つ目のQセルの値と2つ目のGセルの値が一致しなかった時、2つ目のシートの最後の列へ『NG Aセルの値、Qセルの値』 1つ目のシートのフォーマットは、以下のようです。 Aセル     Qセル 果物     ランク オレンジ    B レモン     C バナナ     A パイナップル  D 2つめ目のシートのフォーマットは、以下のようです。 Eセル     Gセル 果物     ランク バナナ     D 空白      空白 スルメイカ   空白 鞄        B レモン      C メロン      A バナナ      A 以上 ご教示宜しくお願いいたします。

  • 関数が入っている列で値のある最後のセルの値を返す

    お尋ねします。 関数が入っている列で式の値が入っている一番下のセルの値を調べるにはどうしたら良いでしょうか? 例      A列   1   5   2   10   3   13   4   (式の値が無いのでゼロ) B1セルにA3セルの13と言う値を返したいのですが、列に式(SUMPRODUCT関数)が入っていて、実際はA4セルのゼロが返ってきます。 またシート1~シート5 まで上記と同じ式が入っていて、シート1のA列の最後の値「13」をシート6のB1セルに値を返す場合、INDIRECT関数を使った場合、どういう式になるでしょうか? ご回答よろしくお願いします。

  • セルの12行目の入力用の位置に17行目・19行目を代入すると『誤』の値

    セルの12行目の入力用の位置に17行目・19行目を代入すると『誤』の値になってしまいます。 『正』の値を求めるためには、H12のセルにどのような式を入れれば良いか教えてください。

  • 別シートの指定位置へ値を入れる関数

    OS:WindowsXP エクセル2003です シートAに A列     B列    C列 結果記号 点検記号 判定用 A              1_2011 A              3_2011 A      11_2011 A      12_2011        B 15_2011        X 18_2011        D 20_2011 A 1_2012 A 4_2012        D 9_2012 .... 結果記号、点検記号、そしてシート移植用の判定用があります。 判定用というのはID_年を数字にしたものです。 1_2011の場合、ID1の2011年を指し、1_2012だとID2の2012年を指します シートBには     A列  B~H列  I列  J列  1行目 ID  名称とか 2011 2012  ←ここはタイトル列です 2行目 1  りんご 3行目 2  ばなな 4行目 3  ぶどう ... 21行目 20  なし という形の表があります。 シートAの判定用列の値と一致する場所に、結果記号か点検記号を入れたいです。 例えば:シートAの判定用「1_2011」の場合 シートBのIDが1、年度が2011年のセル(I2)に結果記号のAを入れ シートAの判定用「9_2012」の場合 シートBのIDが9、年度が2012のセル(J9)に点検記号のDを入れたいです。 この場合の関数はどのような感じになるのでしょうか? シートBのI2に =IF(COUNTIF(シートA!$C:$C,$A2&"_"&I$1) と、シートAの判定用と、シートBのIDと年に一致するような関数を考えてみましたが、その後点検記号や結果記号を入れるにはどのような関数を足せばいいのでしょうか?

  • シートの行並びの値を別のシートの列にコピーする式は

    あるシートに並んでいる行数値を別シートの列に並べる関数を教えていただけませんか (例)シート1      A   B   C   D 12   48 38  15  39 上記A12 に48 B12に38 C12に15と並んでいる数値を別のシートに列に並びかえる式は? シート2   A 1 48 2 38 3 15 4 39 と行った様にする関数を教えてください。単に数値だけなら                  行と列の並び替えでできますがそうではなくシート1に数値を入力                  することにより関数によって自動的にシート2に数値を表したい。                  

  • VBAでi行j列ずれたセルの値

    VBAでセルA1にTESTという名前を定義しているとします。 セルA1はRange("TEST")で値を取得できますが、 セルA1からi行j列ずれたセルの値はどうやって取得できるのでしょうか? 今までは、Cells(1+i,1+j)で取得していましたが、 行や列を挿入することもあるので、セルに名前を付けたいと思います。

  • エクセルVBA 別シート間の列のコピー&ペースト

    列のコピー&ペーストができません。 i, j は変数で、Integerで定義しており、省略はしていますが、期待通りの値がi, j には代入されています。 Sheet1のi列からj列をコピーし、Sheet2のC列(これは固定)に貼り付けたいのですが、うまくいきません。 私の書いたコードは下記の通り。 下記は改行されていますが、実際のVBAでは1行で書かれています。 Worksheets("Sheet1").Range(Columns(i), Columns(j)).Copy Worksheets("Sheet2").Range(Columns("C")) 貼り付け先(Destination)の記述がいけないのでしょうか? 行き詰っておりますので、どなたかお助けください!

  • 行と列を指示して表中の値を表示する方法を教えて下さい。

    ある行と列を指示して下表の様な値を表示する方法を教えて下さい。 例)A1セルに2行と入力、A2セルに4列と入力をしたら、A3セルに答えの"8"が出るようにしたい。 1列 2列 3列 4列 5列 1行 A B C D E 2行 1 5 6 8 9 3行 F G H J K 4行 3 4 1 5 8 5行 T R W A S

専門家に質問してみよう