• ベストアンサー

「エクセル」で「アクセス」のようにデータを呼び出したい(2)

「Excel2000」を使用しています。 NO.608938で質問を させて頂いたのですが、 それを踏まえた新たな疑問が 出てきたので、前回の質問文を引用させて 頂きます。 >たとえば住所録で、 >「sheet1」の >1行目にリストのタイトルが入っていて、 >A2、A3…に通し番号、 >B2、B3…に名前、 >C2、C3…に住所、 >D2、D3…に電話番号 >が入っているとします。 >その時、「sheet2」の >(たとえば)A2に >「sheet1のA2」に入っている通し番号を入力すれば、 >その行に入力されている名前や住所や電話番号が、 >任意のセル(たとえばD10、C8、C9)に表示される… >といったことは可能でしょうか? …との質問に、VLOOKUPを使う方法を 教えて頂いたのですが、さらにもう一歩進んで… たとえば同一人物(名前、住所等同じ)に 同じ通し番号をつけた場合に、 その人が受け持っている 複数の得意先の名前(E2、E3…)や 住所(F2、F3…) を、Sheet2にまとめて表示させることは 出来るのでしょうか? 分かりにくい説明ですみませんが… たとえば、番号「1」番の「田中太郎」さんが A2、A3、に入力されていて、 E2に「○○商事」、E3に「○○物産」(Fに住所) となっていた場合、Sheet2に「1」と入力して 「田中太郎」さんを呼び出すと同時に、 得意先の一覧と住所も表示させることは 出来るでしょうか? 「同時に」でなくても構わないので、 何か良い方法がありましたらお教え下さい。

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 番号をA2に入力し、得意先をA3~、住所をB3~その隣へ表示させるとします。 A3を選択し、数式バーに、 =IF(COUNTIF(Sheet1!$A$2:$A$11,$A$2)<ROW(A1),"",INDEX(Sheet1!E$2:E$11,SMALL(IF(Sheet1!$A$2:$A$11=$A$2,ROW(Sheet1!$A$2:$A$11),65537),ROW(A1))-1)) と入力して、まだ数式バーにカーソルがある状態で、[Ctrl]と[Shift]を推しながら[Enter]を押して決定します。 (数式の両端に「{}」が付いて配列数式になります。) そうしたら、これをB3へコピーし、さらに下の行へ十分の行数(Sheet1のデータ数で十分)コピーします。 なお、Sheet1の範囲は2~11行になっているので適宜変更して下さい。

mami0810
質問者

お礼

お礼が遅くなってすみません。 式の意味はほとんど理解出来ませんでしたが(^-^;) なんとか無事表を完成させることが出来ました。 難しそうな関数ですが、 エクセルってこういうことも出来るんですね。 回答、ありがとうございました。

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

その他の回答 (4)

  • sakenomo
  • ベストアンサー率52% (35/67)
回答No.5

#4です。 もうひとつ補足を・・・。 検索する番号は、Sheet2のA2に入力してください。 大事なことを忘れていました。(^_^;)

mami0810
質問者

お礼

何度も書き込み、ありがとうございました。 遅くなりましたが、 なんとか無事、表を完成させることが 出来ました。 少し関数も勉強してみようと思います。 回答、ありがとうございました。

すると、全ての回答が全文表示されます。
  • sakenomo
  • ベストアンサー率52% (35/67)
回答No.4

#3です。 失礼しました。 >E2に「○○商事」、E3に「○○物産」(Fに住所) でしたね。 Sheet1の作業列にG列をあてるとして、G列に前記の数式をいれ、Sheet2には、 =IF(COUNT(Sheet1!$G$2:$G$100)>ROW()-3,INDEX(Sheet1!A$1:A$100,MATCH(ROW()-2,Sheet1!$G$1:$G$100,0),1),"") を入れてみてください。(前記の数式のFをGに変えただけです。) なお、Sheet1のA列は、ソートされていなくても大丈夫です。

すると、全ての回答が全文表示されます。
  • sakenomo
  • ベストアンサー率52% (35/67)
回答No.3

Sheet1に作業列を設ける必要がありますが、それでもよろしければ。 Sheet1のF1に、 =IF(A1=Sheet2!$A$2,COUNTIF(Sheet1!A$1:A1,Sheet2!$A$2),"") を入れて、下へリストの行分オートフィル。 Sheet2のA3に、 =IF(COUNT(Sheet1!$F$2:$F$100)>ROW()-3,INDEX(Sheet1!A$1:A$100,MATCH(ROW()-2,Sheet1!$F$1:$F$100,0),1),"") を入れて、右へ必要な列までオートフィル。 下へ必要な行までオートフィル。 この関数では100行までの対応なので、必要に応じて式中の100の部分を書き換えてください。

すると、全ての回答が全文表示されます。
  • happypoint
  • ベストアンサー率36% (521/1422)
回答No.1

前回の質問ででた回答は、  =VLOOKUP(A2,Sheet1!A2:D5,2) のような形でしたよね。 この最後の「2」という数字を、 「3」とか「4」に変更した式を、 氏名の隣の列にでも入力してみてください。 (例)  =VLOOKUP(A2,Sheet1!A2:D5,3)  =VLOOKUP(A2,Sheet1!A2:D5,4) このことについては、 前回の質問の回答者の方が、丁寧に解説してくださっているようですが^^;。 ちゃんとお読みになりましたか?

mami0810
質問者

お礼

なんとか無事表を完成させることが 出来ました。 回答、ありがとうございました。

mami0810
質問者

補足

すみません。 私の説明の仕方が悪かったですね。 前回の回答は理解しているのですが、 この方法だと一つの番号に対して、 一つの項目(名前、住所など)から 一つのデータしか 表示出来ないですよね? 今度は、一つの番号に対して、 一つの項目(得意先名)から 該当する全てのデータ(複数)を 呼び出したいのですが、 どうすれば良いでしょうか?

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

関連するQ&A