• ベストアンサー

EXCELで2つの値をキーに表から答えを求める

INDIRECTやADDRESS関数の使い方が分からず困っています。 次のようなことがしたいのですが、どのようにすれば可能でしょうか? 表1 ┌──┬──┬───┐ │記号│番号│値  │ ├──┼──┼───┤ │ A | 10 │xxx│ │ A │ 11 │yyy│ │ B │ 11 │zzz│ 表2 ┌──┬───┐ │キー│答(*) │ ├──┼───┤ │A:10│xxx│ │B:11│zzz│ 表1に記号と番号と価格が並んでいるテーブルがある。 表2に「記号:番号」で記されたキーがあり、これを記号と番号に分離して、 表1の1列目、2列目にそれぞれマッチさせて、3列目の答えを求め、 表2の2列目(*)に入力する。 どうかよろしくお願いします。

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

こんにちは。KenKen_SP です。 逆の発想で、表1 の[番号]と[値]の間に行挿入して、 =A2 & ":" & B2 とすれば、 ┌──┬──┬──┬──┐ │記号│番号│    │値  │ ├──┼──┼──┼──┤ │ A  | 10 │A:10│xxx │ │ A  │ 11 │A:11│yyy │ │ B  │ 11 │B:11│zzz │ こんな表になりますので、Vlookup 関数で簡単に求めると思いますが、 ダメですか?

goku3
質問者

お礼

なるほど!!! 試したところ、今は、とりあえずこの方法で凌げそうです。 即答ありがとうございました。助かりました。委細は後ほど。

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

その他の回答 (2)

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.3

私も#2の方の方法が一番楽だと思いますが... #1の方の方法は値が文字列だと結果が表示できません。 同一の記号と番号の組み合わせがない場合(D2がキーで記号1桁、番号2桁で固定)なら =INDEX($C$1:$C$100,SUMPRODUCT(($A$1:$A$100=LEFT(D2,1))*($B$1:$B$100=RIGHT(D2,2)*1)*ROW($B$1:$B$100)))

goku3
質問者

お礼

お答えありがとうございました。 SUMPRODUCTが数値の掛け算をする関数なのに、 なぜマッチングの結果のようなものが返せるのかが分からなかったのですが、 今朝からEXCEL画面相手に色々試してみて、分解していくと、 ($A$1:$A$100=LEFT(D2,1))*($B$1:$B$100=RIGHT(D2,2)*1) がTRUEとなるなら、(マッチングするなら)、 ROWの結果としてのその行番号を返してくれて、 その結果、INDEXでその行の値を取ってくる・・という感じだったんですね。 勉強になりました。 数値であるか文字列であるかがハッキリしないデータが混じっているとき、 どうも上手くいきそうに無いので、#2の方の方法(で、すでに仕事としては先へ進んでおり・・・)で、今回は喉元を過ごそうと思います。 ありがとうございました。。。 ※RIGHT(D2,2)*1 の「*1」の意味が最初、分からなかったのですが、 文字列から数値に変更するテクニックだったんですね・・・ 力づくならこういう方法もあると、プロの方から教えて頂きました。 ↓ =IF(ISERR(D2*1),D2,D2*1) 以上、お礼まで。

goku3
質問者

補足

お礼が遅くなり、すみませんでした。

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

以下の方法は如何でしょうか。 例えば、表1をA2:C5とし、番号列が文字列とします。 =SUMPRODUCT((A2:A5=MID(A10,1,FIND(":",A10)-1))*(B2:B5=MID(A10,FIND(":",A10)+1,10))*C2:C5) 為参考.番号列が数値の場合、 =SUMPRODUCT((A2:A5=MID(A10,1,FIND(":",A10)-1))*(B2:B5=VALUE(MID(A10,FIND(":",A10)+1,10)))*C2:C5)

goku3
質問者

お礼

お礼が遅くなりました。 最初、SUMPRODUCT関数が何をするものかが分からなかったのですが(今も結局良く分からずじまいですが)、縦横の掛け算のようなものだったのですね。 表1中の2列目に文字列等、数字でない列は上手く出来ましたが、数字の場合は答えが0になってしまいました。。。 また、値欄に「未定」などの文字があると、一斉に 「#!VALUE」が表示されてしまって上手く出来ませんでした。 私の設問が数値のテーブルのような誤解を与えてしまいましたので、この方式をご提案頂いたものと思います。 (記号もA,Bなどでは紛らわしかったので・・・実際はもう少しこんな感じでした↓) ┌──┬──┬──┐ │記号│番号│値 │ ├──┼──┼──┤ │キ色| 101│100│ │青緑│BG00│1200│ : : : : │丸玉│M001│200│ ┌─────┬──┐ │キ色:101 │100│ │青緑:BG00 │1200│ │丸玉:M001 │200│ いずれにしましても、ご回答ありがとうございました。勉強になりました。

goku3
質問者

補足

少し上手く行かないようです。後ほど試験して回答致します。 取り急ぎ、ご教示ありがとうございました。

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

関連するQ&A

  • エクセル2007 複数セルのデータを1つに連結

    いつもお世話になります。 エクセルで、複数セルのデータを1つに連結して表示させる方法を教えてください。 データ件数が多い(1000件以上)ため、 関数(CONCATENATE)や、連結記号(&) は、セルを1つずつ選択する時間が掛かるため、 その他に方法があれば教えてください。 また関数(CONCATENATE)でセル範囲をドラッグなど簡単に指定できる方法があれば教えてください。 【やりたいこと】  A列が同じデータの場合、B列の値をC列のセルに連結して表示させたい 【イメージ】 A列 B列 C列 xxx aaa aaa bbb ccc ddd eee xxx bbb xxx ccc xxx ddd xxx eee yyy ffff fff ggg hhh yyy gggg yyy hhh zzz iii iii jjj zzz jjj

  • エクセルで表引き

    こんにちは いつもお世話になっています。  Windows7、エクセル2007です。  初心者のため以下の関数が可能かどうかも判断できませんが教えてください。 勝手ながら、作業列を使う場合はD列以降にお願いします。ピボットテーブルは不要です。 A列に1からの連番。B列に名前(表引きに直接関係はありませんが)。C列に記号が3種類あります。 C列の記号ごとにA列の番号をA16セル以下に引いてくる関数を教えてください。 具体的にはJPGをご参照ください。 A16~19にC列の記号Iを持つA2~11の番号 A20~23にC列の記号IIを持つA2~11の番号 A24~27にC列の記号IIIを持つA2~11の番号 実際はA列の連番は50ぐらいあります。 引いてくる先のセルA16以下のセルは余裕を持たせてあります。 A16以下に検索値のようなものはありませんが大丈夫でしょうか。 厚かましいお願いですが応用が利く、わかりやすい関数も希望しております。 よろしくお願いします。

  • 表示されているレコードを1つ上にする

    環境:ACCESS2003&XP Pro テーブルとそのテーブルをソースにしたクエリーを元に一覧形式のフォームを作成しています。以下のようなイメージです。 品名  仕様  数量 単価 合計  A   xxx xxx xxx xxx ↑  b   yyy yyy yyy yyy ↑  C   zzz zzz zzz zzz ↑ *↑はボタン 上記の表示で↑ボタンをクリックすると 表示されたレコードがひとつ上に行く方法が わかりません。 よろしくお願いします。 例:上記で品名bの↑ボタンをクリック 品名  仕様  数量 単価 合計  b   yyy yyy yyy yyy ↑  A   xxx xxx xxx xxx ↑  C   zzz zzz zzz zzz ↑

  • エクセルで一覧表を「縦横」に調べて該当する値を取り出す方法について

    Excel2002を使用しています。 下記のような表を作成し、「MATCH関数」と「INDEX関数」を使用して、該当の値(仮にα値:5.3、距離700とします)を取り出そうとしているのですが、エラーになってしまいます。 A B C D 1 3.4 3.5 3.6  2 700 30.0 30.4 30.7 3 750 31.1 31.6 31.9     4 800 32.3 32.8 33.2 5 6 α値 5.3     7 距離 700   この表から、行番号、列番号を出すために、以下の関数式を使っています。     行番号:=MATCH(B6,B1:D1)     列番号:=MATCH(B7,A2:A4)  最後に、「INDEX関数」で該当の値を取り出したいのですが、この「INDEX関数」の結果が「#REF!」になってしまいます。関数式は   =INDEX(B2:D4,D6,D7) ちなみに、D6には、行番号の関数式が、D7には、列番号の関数式が入っています。 このエラーを解消したいのですが、どなたか知恵を貸していただけませんでしょうか。よろしくお願いします。

  • エクセルで表引き

    こんにちは いつもお世話になっています。  Windows7 エクセル2007を使っています。  A列に1からの連番。B列に名前。C列に記号が3種類あります。 C列の記号の種類別にA列の番号をA16セル以下に引いてくる関数を教えてください。 具体的には A16~19にC列の記号Iを持つA2~11の番号 A20~23にC列の記号IIを持つA2~11の番号 A24~27にC列の記号IIIを持つA2~11の番号 以下のようにしたいです(表がずれてすみません。JPG添付しました)       A      B      C 1 No 名前 記号 2 1 新井 III 3 2 井上 II 4 3 上田 I 5 4 遠藤 III 6 5 小高 I 7 6 加藤 III 8 7 木村 II 9 8 工藤 I 10 9 近藤 I 11 10 佐藤 II 12 13 14 15 16 3 17 5 18 8 19 9 20 2 21 7 22 10 23 24 1 25 4 26 6 27 実際はA列の連番は50ぐらいあります。 引いてくる先のセルA16以下のセルは各グループに余裕を持たせてあります。 A16以下に検索値のようなものはありませんが大丈夫でしょうか。 厚かましいお願いですが、関数初学者のため高度な関数とともに、多少遅くなっても、応用が利くわかりやすい関数もご紹介いただければ助かるんですが。

  • 列値の分割の方法

    ご存知でしたら、教えてください。 列値に、任意のカンマ区切りの文字列がある時(コードと名称)、 それを2つの列に分解(コード列と名称列)して出力する方法がありましたら、教えてください。 例) INPUTテーブル FLD1 1:AAA,2:BBB,3:CCC 1A:XXX,2A:YYY,3A:ZZZ ↓ OUTPUTテーブル FLD1 FLD2 1,2,3 AAA,BBB,CCC 1A,2A,3A XXX,YYY,ZZZ よろしくお願いします。

  • エクセルの関数でIPアドレスのあるブロック部分だけ文字列を取り出したい

    A1セルに www.xxx.yyy.zzzというIPアドレスがあります。 このうちyyyの部分だけ、関数を使用してB1セルに自動で入力するようにしたいです。 www.xxx.の文字数は常に固定ですが、yyy.zzzは文字数が変動します。 yyy、zzzの各ブロックは最低1文字、多くて3文字になります。 お手数ですが、ご教授頂きたくお願い申し上げます。

  • EXCELで項目ごとに計算したい

    検索したのですが、どうもうまくひっかからないので 質問させて頂きます。お知恵拝借、お願致します。 EXCELで作成している下記のようなデータがあります。 (毎月1回で、1回につき数百~3万程度出てきます。 機種名、クラス名は、その時々でいくつ出てくるか変わります。) 機種名 台数 クラス XXX   1   A YYY    2   B XXX   3   C ZZZ   1   A YYY   2   B  :    :   : と言ったデータを クラス  A     XXX  1       ZZZ  1 B     YYY  4 C     XXX  3 と言ったように計算して提出するマクロを作りたいと 考えています。ピボットも考えましたが どうもうまく考えが浮かびません… こんな考え方があるよとか、参考になるURLなど 教えて頂けますでしょうか? 宜しくお願い致します。

  • Excel 表から値をさがして隣のセルの値を返す

    お願いします、教えて下さい。 VLOOKUPのようにいまから左端に番号などを入れる手間無く、値を返したいです。 一つの目のbook     2つ目のbook  A列  B列      A列   B列 顧客   担当    木下麻衣 小野博美 佐藤          ↑ 田中香織 吉岡       ここに関数を入れて、B列の金田を返す 木下麻衣 金田    同シート上で表をふたつ作っても構いません、どなたか教えて下さい。 

  • エクセルVBAでテキスト保存

    エクセルのファイルをメモ帳で保存する場合に下記のコードが書いてあります。 strFILENAME = xlAPP.GetSaveAsFilename(InitialFileName:="データxxx_yyy_zzz.txt",FileFilter:=cnsFILTER, Title:=cnsTITLE) このうち、ファイル名の"データxxx_yyy_zzz.txt"、xxx, yyy,zzzをそれぞれ、特定のセルから取得したい場合、どのように直せばいいのでしょうか? xxx=A1セル yyy=A2セル zzz=A3セル といった感じです。 よろしくお願いします。

このQ&Aのポイント
  • 家賃54,000円のアパートを探している方のためのポイントを解説します。
  • 物件①は都市ガスや設備が充実していますが、リビングが狭く感じるかもしれません。
  • 物件②は角部屋で駐車場も広めですが、リビングは長細い形状です。
回答を見る

専門家に質問してみよう