• ベストアンサー

エクセル 複雑な表の参照

参照値に1つのデータを入れ、それに対応した複数のデータを検索結果として表示したいです。 しかも「複数のデータ」の数は一定ではありません。 例) 準備:『セルE1』以下に『都道府県名』と『各都道府県の市区町村名』の一覧表を作成 『セルA1』に『都道府県名』を入力することで、『セルC1』以下に『各都道府県の市区町村』を表示させたい vlookupを使用すればよいのでしょうか? それとも、他の方法があるのでしょうか? よろしくおねがいします。

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

>準備:『セルE1』以下に『都道府県名』と『各都道府県の市区町村名』の一覧表を作成 この意味が添付画像のようなイメージなら、C1セルに以下の式を入力して下方向にオートフィルコピーするのが簡単です。 =INDEX($E:$L,ROW(A2),MATCH($A$1,$E$1:$L$1,0))&"" No1の回答者の例示された同じ都道府県は連続して入力されているレイアウトなら以下のような数式が計算負荷が少ないのでお勧めです。 =IF(COUNTIF(E:E,$A$1)<ROW(A1),"",INDEX(F:F,MATCH($A$1,E:E,0)+ROW(A1)-1)) 都道府県がバラバラの行に入力されているなら以下のような数式になります。 =INDEX(F:F,SMALL(INDEX(($E$1:$E$100<>$A$1)*1000+ROW($E$1:$E$100),),ROW(A1)))&""

その他の回答 (4)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.5

>たとえば、A行の上に5行追加すると… =IF(OR(A$6="",COUNTIF(G:G,A$6)<ROW(A6)),"",INDEX(H$6:H$5005,SMALL(IF(G$6:G$5005=A$6,ROW(A$6:A$5005)),ROW(A6)))) の数式になり、#NUM!の表示が出てしまいます。 私の提示した数式を含めて、ROW(A1)のような関数部分は、セル範囲を取得しているのではなく、単純に1、2、3、・・・のような連続する数値を取得するための数式です。 したがって、セルを挿入すると自動的にセル番地が変わる(=数値が変わる)ために期待した結果が得られないことになるわけです。 解決法は、どのセルに入力する場合もROW(A1)やROW(A2)の部分は固定して(この部分を修正して)入力してください。 #このようなご質問では、リストのレイアウトや使用目的によって、より合理的な関数や処理も考えられますので、具体的なリストのレイアウト(セル番地や入力順)や使用目的(たとえばセルの値によって可変の入力規則のリストを作成したいなど)を例示されたほうが良いと思います。

sue_3jp
質問者

お礼

みなさま回答ありがとうございました。 NO3の方法で、行挿入後ROWの部分を修正して思い通りの表が完成しました。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

No.1・2です。 たびたびごめんなさい。 No.2は無視してください。 全く見当違いな回答をしていました。 本来すでに数式が入っているSheetに行(または列)を挿入・削除するのは好ましくありません。 お示しのような問題が出てきますので、 どうしてもデータを追加したい場合は No.1で書いたようにデータはバラバラでも問題ありませんので 最終行の下へ追加していきます。 これでちゃんとデータが追加されても対応できると思います。 どうしても都道府県別にまとめたい場合は 別列に都道府県別に番号を付加しておき(北海道=1・青森=2・・・沖縄=47)のような感じで 行挿入せずにデータの最終行以降に追加していきます。 そしてその番号の昇順で並び替えを行うのはどうでしょうか?m(_ _)m

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

No.1です。 >実はこの表の上に何行か追加するとうまくいきません。 今回の数式に限らず、すでに数式が入っているSheetに行を挿入すると 他の数式でもそのような問題が出てきます。 今回の場合、列は全く関係ないので列挿入は問題ないのですが、 列方向に関しての数式が入っていて(列方向にフィル&コピーするような場合)は同様の問題が出てきます。 どうしても行挿入しなけらばならない場合の対処方法としては 挿入した行には作業列の数式が入っていませんので、一つ上の作業列のセルのフィルハンドルで数式をコピーしてみてください。 (一旦挿入した行に数式が入れば、フィル&コピーした最後のセルのフィルハンドルでダブルクリックします) これで作業列の最初に数式が入っていた最終行まで数式が新たにコピーされます。 結果の数式はそのままで大丈夫のはずです。m(_ _)m

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 具体的な表のレイアウトが判らないのですが、 >準備:『セルE1』以下に『都道府県名』と『各都道府県の市区町村名』の一覧表を作成 とありますので、↓の画像のように「都道府県名」の列と「市町村名」の列は別だというコトでの一例です。 ↓の画像でC1セルに =IF(OR(A$1="",COUNTIF(E:E,A$1)<ROW(A1)),"",INDEX(F$1:F$5000,SMALL(IF(E$1:E$5000=A$1,ROW(A$1:A$5000)),ROW(A1)))) これは配列数式になりますので、Ctrl+Shift+Enterで確定! この画面からコピー&ペーストする場合は 上記数式をドラッグ&コピー → C1セルを選択 → 数式バー内に貼り付け → そのまま(編集可能なまま) Ctrl+Shiftキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 これをフィルハンドルで下へコピーすると、画像のような感じになります。 (E列のデータはバラバラでも構いません) ※ 実際の表のレイアウトが判ればもっと具体的なアドバイスができると思います。 まずはこの程度で・・・m(_ _)m

sue_3jp
質問者

補足

ありがとうございます! 自分の思っているイメージ通りのことができました。 ですが、実はこの表の上に何行か追加するとうまくいきません。 たとえば、A行の上に5行追加すると… =IF(OR(A$6="",COUNTIF(G:G,A$6)<ROW(A6)),"",INDEX(H$6:H$5005,SMALL(IF(G$6:G$5005=A$6,ROW(A$6:A$5005)),ROW(A6)))) の数式になり、#NUM!の表示が出てしまいます。 列の追加は問題ないようです。 数式の意味もわからず使わせていただいているのでいけないのですが、改善方法を教えていただけるとありがたいです。 よろしくおねがいします。

関連するQ&A

  • 【Access】住所を分割して抽出したい

    Accessで住所から都道府県と市区町村を抽出 はじめまして、Access初心者です。 右も左もわかっていないので 質問がおかしかったら申し訳ございません。 Accessのクエリを使って 住所録テーブルのデータにある住所から 都道府県、市区町村、それ以降 で分けて表示したいと思っています。 元のデータは、都道府県名が入っていないものや、都道府県名から始まっていない物、そもそも入力されていないものもあります。 都道府県一覧のテーブル(テーブル名: T_都道府県)と 市区町村一覧のテーブル(テーブル名: T_市区町村) は準備しました。 色々調べたのですが、Access不慣れな為 正しい式が書けておりません。 現在はサブクエリに 都道府県:(select[都道府県名] from T_都道府県 where [住所] like [都道府県名]&"*") 市区町村:(select[市区町村名] from T_市区町村 where [住所] like "*"& [市区町村名]&"*") それ以降:Replace (Nz([住所]," "),Nz([都道府県]," "),Nz([市区町村]," ")," ") と入力して実行したら このサブクエリでは1つのレコードしか返せません。 のエラーが出てしまいました。 (ですよね、、、) 都道府県と市区町村のテーブルを利用して どう直せば、うまく表示ができるのか わかる方教えていただけると幸いです。 どうか、よろしくお願いいたします。

  • エクセルのVLOOKUPで「検索値」を複数設定したいのですが。

    エクセルのVLOOKUPで「検索値」を複数設定したいのですが。 例えば A列 都道府県名 B列 市区町村名 C列 町名 D列 番地 E列 人口 F列 面積 という表Aがあります。 自分の持っている都道府県名、市区町村名、町名リスト(表Aの中から数個だけピックアップしたもの)に人口を(表Aから引っ張ってきて)投入したいのですが、町名だけでVLOOKUPを使うと、複数個の同じ町名があるためにうまく行きません。 そこでA、B列の都道府県名、市区町村名も「検索値」として含めて、3列とも合致するものを引っ張ってきたいのですが、どうしたらよいのでしょうか?

  • <ACCESS> 住所から市区町村を抜き出したい

    Access初心者です。 住所一覧が書いてあるテーブルのデータから 市区町村を抜き出したく苦戦しております。 住所のデータは 都道府県から始まっているものから 市区町村から始まっているもの また、空白もあります。 市区町村名の一覧テーブル(T_市区町村)は作りました。 サブクエリには 市区町村:(select [市区町村名] from T_市区町村 where [住所] like "%" &[市区町村名] & "%") と入力しました。 そのまま実行すると 特に市区町村が抽出されることもなく そのまま住所が転記されてしまいます。 どのようにしたら良いのでしょうか。 お力を貸していただけたら幸いです。 よろしくお願い致します。

  • Excel で、都道府県別一覧表を ”楽に”作るには?

    Excel 2000 を使っています。 といっても、たまにちょこっと使ったりしてきた程度です。 たまたま、ある「都道府県別一覧表」を作りたいと思ってるんですが、 たとえばテンプレートを探してきて使うとかの”より楽な”方法をご存知でしたら、よろしくお願いいたします。 最初の列の各セルに都道府県名をそれぞれ入力するのは、それなりの手間なものですから、

  • エクセル 別の表からの参照

    上手く説明できるかわかりませんが・・・ 表(1)に住所録を作成しております。 表(2)でそのデータを反映させたいのです。 例えば表(2)のA1セルに表(1)のA1セルのデータを参照させます。 これは=[表(1).xls]A1でできます。 表(2)のA2セルに表(1)のA2セルを参照させる計算式を教えてください。 素人考えで、=[表(1).xls]A1+1でできると思ってました・・・(^^;) 次の行を指定できる計算式を!

  • エクセルVLOOKUP表の参照について

    下記のような表を検索範囲にして項目を他のシートよりコピーして検索値のセルに貼り付けて、右の番号を 表示させるようにしたいのですが? 通常は番号を入れて項目を表示させるのが普通なんでしょうが今回はこの数字を表示させて別の表で昇順で 並べ替えたいためです。  項目     番号 A11政治    1          2 A3社会     3 A20経済    4 B13学校    5 W20ランサ  6 B20学芸会   7 C7事業     8           9 S20外国    10 S21図書     11 J5人事     12           13            14             15            16 上記のようなような参照表から、同じシート上に任意のセルにVLOOKUP(検索値のセル(この場合は下記の科目),項目のセル:参照表の最終セル(この場合は16のセル),2)という関数を入れて参照したところ、下記のように表示されてしまいました。何回か繰り返してみたのですが表示は同じでした。 任意のセル   科目 2     A11政治 2 4     A3社会 4     A20経済 5        B13学校 16     W20ランサ 5     B20学芸会 8     C7事業 2 16     S20外国 16     S21図書 12     J5人事 2 2 2 2 A20経済の4以外めちゃめちゃな数字が任意のセルに表示されてしまいました。任意のセルにも上記の参照表と同じ数字を表示させたいのですが、数式が間違っているのでしょうか?何分にも未熟者のため苦労しています。空白の欄にも非表示ですが項目が入っています。表がゆがんで見苦しく申し訳ありません。

  • EXCEL参照値を参照できる?

    EXCELのVLOOKUPについて質問させてきださい。 仕事でとある表を作ってるのですが、あるデータからイコールで参照してリストを作っています。 そして、そのリストを元にフィルターしたり、ピボットテーブルを使ったりしようとしているのですが、ここで一つ問題が… イコールで結んだ、参照値(たとえばAとします)を利用して、VLOOKUPを使おうとしたのですが、普段通りにやっても、ウンともスンともいきません。 これはやはり、VLOOKUPの検索値に使っているのがイコールで結んだ参照値だからなのでしょうか?? だとしたら、それを解決する方法は存在するのでしょうか?? どなたかご存知の方がおられましたら、ご教授いただけないでしょうか… よろしくお願いします!

  • Excelで参照したセルに参照先の数値が反映されない

    よろしくお願いします。 今、貸し会議室の請求書をエクセルで作成中です。 会議室料、マイク使用料、などなどを一覧表に打込んで、計算させたシートから、請求書のシートにより各項目に該当する請求額などを参照させておりますが、例えば2,000と参照先のセルにはデータが入っているのに、請求書の一部のセルにおいて2,000が0にしか表示されないんです。他のマイク使用料などは、500となっていれば、500と参照して表示されているのですが、なにが原因なんでしょうかよろしくお願いします。

  • EXCELで全てのシートを参照した一覧表の作成方法

    色々な情報を入力したSheetが50枚あり、 あまり手間のかからない方法で、 この50枚の中で、ある特定のセルの情報だけを参照させて一覧にした表を作成したいと思っています。 具体的には、Sheet名が”一覧表”というシートを作成し、 この”一覧表”シートの B1 セルには Sheet1 の A1 セルの値を表示させ、 次いで、同”一覧表”シートの B2 セルには Sheet2 の A1 セルの値を、 次いで、同”一覧表”シートの B3 セルには Sheet3 の A1 セルの値を、                       ・                       ・                       ・ 最後に、同”一覧表”シートの B50 セルには Sheet50 の A1 セルの値を、 といった形で、一覧表を作成したいです。 ご教示いただけますでしょうか。 よろしくお願いいたします。

  • エクセル 表検索した合計の出し方について

    既出でしたらすいません。 いろいろ検索していみたのですが見つかりませんでしたので、教えて下さい。というかできないのですかね? エクセル2007を使っているのですが、商品、単価、入り値を一覧の表にしてVLOOKUPでその一覧の番号から表検索して別の一覧を作れるようにしました。その新しい表の最後の行に単価と入り値の合計を出したいと思っています。ただ、その最後の行は一定ではなくどこになるかわかりません。(違う場所に合計用のセルを作るのではなくすでに関数がある場所に付け足したいのですが。。。) 以下がそのセルに入っている関数の例です。 =IF(I6="","",ROUNDDOWN(I6*F6+I6*IF(G6<10,G6/10,IF(G6<100,G6/100,G6/1000)),0)) I6にVLOOKUPで検索した単価が入るように関数を入れてあります。 F6、G6は数量を入力するようにしてあります。単価と数量の合計 この関数に付け加えるか、もしくは新しい関数でもいいので 「もし、A6に合計の文字列が入れば、I1~I5(合計の文字列が入る前のセル)までを足す」 というようなことができますでしょうか?

専門家に質問してみよう