• ベストアンサー

EXCELでテーブルを検索

EXCELでテーブルを検索して値を求める式を考えたい。 (問題)10行10列の数値のテーブルAがA1~J10まであります。 そのテーブルをセルA15(Yセルと呼ぶ),A16(Xセルと呼ぶ)に入っている数によってテーブルAの各行と列の交点のセルを決め、そのセルの値をA17(結果セルと呼ぶ)に入れたい。 A17にはどのような式を書けばよいのでしょうか。 なお、もしそのテーブルが別のシート(名称;別シート)にあった場合はどうなりますか。

  • taktta
  • お礼率72% (1031/1430)

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

  • ベストアンサー
  • vbalab
  • ベストアンサー率48% (24/50)
回答No.3

いきなりですが、回答を。 A17には、   =INDIRECT(ADDRESS(A15,A16)) と書きます。 テーブルが別シートにあるなら、   =INDIRECT("別シート!" & ADDRESS(A15,A16)) と書きます。

taktta
質問者

お礼

どうもありがとうございました

taktta
質問者

補足

シンプルで強力な感じがします。 プロの感覚ですね。

その他の回答 (3)

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

Sheet2のA1とかに式を入れる時は =INDEX(Sheet1!A1:J10,Sheet1!A15,Sheet1!A16) 指定をSheet2のA15,A16に入れるなら =INDEX(Sheet1!A1:J10,A15,A16) です。

taktta
質問者

お礼

ごていねいにありがとうございます。

  • nagasee
  • ベストアンサー率0% (0/1)
回答No.2

=INDEX(A1:J10,A16,A15)

taktta
質問者

お礼

どうもありがとうございました。 こちらはOFFSETと違い0からでなく1から数える感覚で一番考えとフィットしました。

taktta
質問者

補足

A15,16は順番をかえれば合います。

回答No.1

A1を基準として、Xセルに入ってる数値分だけ右でYセルに入ってる数値分だけ下のセル の中身を取り出すには、 =offset(A1, Y, X, 1,1) ですね。別シートにあれば、=offset(シート名!A1,以下同文です。

taktta
質問者

お礼

たしかにこれでよいことがわかりました。 使う上で気をつけるのは、1から数えるか0から数えるかでoffsetは0から数える感覚ですね。 どうもありがとうございました

関連するQ&A

  • エクセルで行から数値を検索し、検索した数値のある列

    エクセルで行から数値を検索し、検索した数値のある列から左側の全ての合計を求めたいです。   A B C D E F 1  3 4 8 9 11 22 ←数字は隙間なくあるが、値がバラバラ(ただし昇順) 2 3  2~6行には色々な数字がまばらにある 4 5 6 1行目から検索したい数→10(別のセルで数式結果として出た数) ズレてるかもしれませんが・・・ E1セルに書かれている「11」の数字より前のD列、 A~D列の2行目~6行目の合計を各行ごとに別々に出していきたいです、どうしたらいいでしょうか また、表は行も列もデータを追加していく予定です

  • Excel 2002 のピボットテーブル

    こんにちわ エクセル2002のピボットテーブルの値を 別のSheetなりにリンク貼り付けをしたいときに ”=”によって引っ張ってくることはできないのでしょうか。 複数のSheetの複数の繋がった列&行にリンク貼り付けを同時に行いたいのです。 エクセル2000では”=Sheet名!セル値番”でリンクできたのですが・・・。 ”GETPIVOTDATA”関数が自動的についてしまい 複数列、複数行の貼り付けができません。 どうにかこの”GETPIVOTDATA”をはずすことはできないでしょうか。 どなたか教えてください!

  • EXCELで行内最小値を検索し、その最小値の入っているセルの同じ列の"1"行の値を返したいのですが。。。

    EXCELに疎いので、わかる方がいたら教えてください。 行いたいことは以下の通りです。 1: EXCELの各行で最小値を検索します。    (値自体はMIN関数で検索できるのですが。。。) 2: 各行において、その最小値の入っているセルの一つ上のセルの値を   返す。 わかりにくいと思うので、例をのせておきます。 *|ABCDEF ----------- 1|*35478 2|*41269 3|*75926 4|*24653 5|*31428 (*は空欄を表します。) という行列があったときに、2行め以降に対し、最小値を検索(2行目であれば、1)し、 そのセルの1行目の値(2行目であれば、"1C"の値である5)を返すということを行いたいのです。。。 上の行列を例にすると以下のようなA列の値を返したいのですが。 *|ABCDEF ----------- 1|*35478 2|541269 3|775926 4|324653 5|531428 (*は空欄を表します。) 別のシートを利用するなど、複雑な方法になってしまっても良いので、 何か知恵のある方がいらっしゃいましたら、よろしくお願い致します。

  • エクセル関数を使って検索したいです。

    やりたいことは以下の通りです。 Sheet1~Sheet15が存在します。Sheet2~Sheet15には3列で行がそれぞれ異なる表があります。例えばSheet1は5行3列、Sheet2は10行3列、Sheet4は30行3列のように。ちなみにこれらの表は行が追加されていきます。 Sheet1にも同様に3列の表があるのですが、Sheet1のB列(2行目)に、式を作りたいです。 どんな式かと言うと、Sheet1のA列(1行目)に値を入れると、それと同じ値を、Sheet2~Sheet15のA列(1行目)と同じものを探し、そのSheetのB列(2行目)の値を返すというようにしたいです。 VLOOKUPを使うといいかと思うのですが、Sheetを14個もまたいで検索したい時にIFで作るとエクセル2003なので入れ子が7個以上になってしまいうまくいきません。 ちなみに、Sheet1に入力する値はAAA1やBBB2の様にアルファベットと数字の組み合わせです。 よって、例えばSheet2のA列にはAAA1、AAA2、AAA3、AAA4の様に、Sheet2のA列にはBBB1、BBB2、BBB3、BBB4の要に入力された状態になっています。 どなたかうまく切り抜ける方法を教えてください。

  • エクセルVBAでデータ検索(Win2000,Excel2000)

    エクセルで毎日の業務で手計算している作業をVBAコードかいて試しているのですが、縦と横の検索で行き詰まってしまい質問しました。どうぞよろしくお願いします。 _A__B____C____D__E__F___G___H 1| 2|_______その他_1~3_4~6_7~10_11~20_21~30 3| 3|__項目A___ 0___50__49__46___43__40 4|__項目B___ 0___45__44__39___37__34 5|__項目C___ 0___43__42__34___30__ 28 行 *このデータは現在(B3:V42)にあり今後増える可能性あり *1行目とA列は空白です。 *2行目とB列は対応する項目です。 *3行目は関係ない値が入っています(データをつくる為の値) このようなデータが、"Sheet2"にあると仮定します "Sheet1"のシート上に配置したComboBox(コントロールツールボックスの)に検索値があります。 (ComboBox1 → 数値 , ComboBox2 → 数値 , ComboBox3 → 文字)*リストは"Sheet1"に登録してあります。 TextBox1 ÷ 2 の結果を小数点以下切上げし、これにTextBox2の値をかけたもの(仮にAAAとする)が、2列目のそれぞれのセルの数値範囲に対応し、TextBox3の文字列がB列に対応し、両検索結果の交わったセルの値を返すようにしたい。 例)もしAAAが「8」なら「F列」をみる。TextBox3 の文字列が「項目B」なら「4行目」をみる。この結果、交わったセルは「F4」なので、「F4」にある値「39」を"Sheet1"."A1"に返す。 また、これらコンボボックス(このシートとは別にテキストボックスを使うこともある)にはひとつずつchangeイベントでいきなり別シート("Sheet3")に書くコードが既に書いてあります。このセルから取り出すことも可能です。よろしくお願いします。

  • ピボットテーブルの検索

    ピボットテーブルを作成し行と列のフィールド項目を検索しそれを他のシートから参照させたいのですが、行の列にはコードで区分し、列のフィールドは月で区分させています。日付はグループとアウトラインの設定で月単位にまとめています。 INDEX(A6:J16,MATCH(A1,A6:A16),MATCH(B1,A6:J6))でそれぞれの交点を参照させたいのですがA1をコード入力、B1を月入力にした場合、コードは1月~9月まではMATCH関数の値がかえってくるのですが10月~12月にした場合#N/Aが帰ってきてしまいます。原因は何になるのでしょうか? 教えてください。       A       B      C      D 1  コード項目   月項目 2 3 4 5  合計:金額   日付 6    CODE      1月     2月    3月 7   1010    100,000   150,000    200,000 ピボットテーブルはこんな感じになっています。 宜しくお願いいたします。

  • [エクセル]処理結果を残して次の処理をさせるには?

    AシートのB~G列の各セルには数値が入っており、全部で数百行あります。 Bシートには、いろいろとデータ処理させる作業用のシートとなっております。 Bシートでは、6つの数字を入力するセルに数値を入力する事でデータ処理がされ、Bシート上で結果が算出されます。 現在はBシートに、Aシートの各行のB~G列の6つの数値を入力してデータ処理をして、結果を算出させています。 ですが、Aシートには数百行もあるので、1行1行の数値を入力して処理させていては時間と労力がかかってしまうので、一気に処理できる方法はないか考えていますが、良いアイディアがありません。 AシートのI列の各行に、Bシートでの処理結果をまとめて算出させる方法はないでしょうか? 例えばAシートのB~G列の各行に 1,2,3,4,5,6 7,8,9,1,2,3 4,5,6,7,8,9 と入力されているとします。 Bシートでは、各行の数字を足す処理をさせるとします。(実際はもっと複雑な処理をさせています) 一気にAシートにBシートでの処理結果を表示させたいと思ってます。 1,2,3,4,5,6,21 7,8,9,1,2,3,30 4,5,6,7,8,9,40 何か良い方法はないかと、ずっと考えているのですが、思い付きそうもなかったので、こちらで質問させて頂く事にしました。 アドバイスをお願い致します。

  • Excelで別のシートの内容を表示させたい

    Sheet1のA2からC50までの範囲にデータを出力し(どこのセルに入るかは可変)、 その内容に従ってSheet2の決まったセルに表示させたいのですが、どのような式にすれば良いか教えて下さい。 条件を言葉で書くと、 Sheet1のA列に001があれば、その行のC列の値をSheet2のJ8に表示する。 参考に、Sheet1のA列はコード名、B列は計算内容、C列は計算結果が別のデータベースから出力されます。 計算結果が0だと出力されず、出力したものは2行目(1行目はタイトル行)から詰めて入ります。 その結果、A2からC50までの範囲のどこに入るかわからないのです。 よろしくお願いします。

  • EXCEL で検索、更新したい

    EXCEL でわからない箇所があり質問します。 前提条件 Sheet1 A列:名前 B列:年月 C列:値 データは、名前と年月で一意になるデータシートがあり マスターデータとして全データが登録されている Sheet2 A列:名前 B列:年月 C列:値 ある条件でとあるデータベースから抽出した名前と年月の一覧がある この段階で値のセルには何も入っていない やりたい事 (1)この状態でマクロを実行し、A列、B列を条件に該当する行から    C列を抽出しSheet2 にセット (2)Sheet2のC列の値を変更後、マクロの実行で    A列、B列の条件を元該当する行から、Sheet1の C列に値を更新 (3)もし、Sheet2のA列、B列の条件に該当しない行がある場合、    Sheet1に行追加しC列を格納 という事をしたいと考えています。 Sheet1 の全ての行をマクロでループさせて A列、B列をif分で比較し行を取得し、Sheet2 に張る場合、 遅くなるのであまりやりたくないと思っています Find 関数も考えたのですが、ヘルプを見る限り、条件が1つしか指定でき ないように思えるのですが、複数列の条件を指定できる Find 関数 あるいは、類似の関数とあかがあるのなら教えてください 最悪は、EXCEL ADO で、自分自身をSQLで抽出、Update、Insert を行う 事も考えていますが、 EXCELのセル内の式で、INDEX関数やDGET関数で簡単に抽出できるのに (ただ、値を変更するので式はかけないけど・・・) わざわざ、ADOでプログラムを組むのもどうなんだろうと疑問に思ってます。

  • エクセルマクロで条件に該当する数値を探す

    エクセル初心者です。 シート1のA1~A18に1~18の数値がランダムに入っています。(重複した値は無し) シート2の3行目C3~T3にも1~18の数値がランダムに入っています。(空欄あり、重複した数値は無し) シート2の2行目C2~T2までは左から順に1~18の数値が入っています。(順位表示) 以上の条件下で下記の作業をマクロで実行させる式を教えてください。 シート1のA1~A18の値と同じ値を、 シート2の3行目C3~T3の中からどのセル(列)に入っているかを確認して、さらに該当する列の2行目C2~T2の値を、シート3の1行目A1~R1に表示させる。 例:シート1のA1=3、A2=2、A3=1の時、 シート2のC3=3、D3=1、E3=2でした。 シート2のC2=1、D2=2、E2=3です(この行の数値は毎回同じ) 上記の時シート3にはA1=1、B1=3、C1=2となります。 *シート1のA列A1~A18とシート3の1行目A1~R1の位置関係はリンクしています。(列→行) シート1 A列 1 3 2 シート2   A列 B列 C列 D列 E列 2行見出し見出し1  2  3 3行見出し見出し3  1  2 シート3 A列 B列 C列  2  1  3 ご理解頂けたでしょうか? 初心者ですので分かりやすい回答を宜しくお願いいたします。

専門家に質問してみよう