• ベストアンサー

条件にあったデータを抽出する関数またはマクロ

エクセルの関数またはマクロで以下のようなことをしたいと思っています。以下のような表を「Sheet1」に作成しています。 A社 住所1 電話番号1 B社 住所2 電話番号2 C社 住所3 電話番号3 D社 住所4 電話番号4 「Sheet2」にて、A1に“A社”と入力すると、B1に住所、C1に電話番号が表示されるようにしたいのです。INDEXやVLOOKUPなどでやってみたのですが、うまくいきません。ご指導をお願いいたします。

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

  • ベストアンサー
  • yum_p
  • ベストアンサー率32% (163/497)
回答No.1

Sheet1には今仮に、A1:C4までしかデータがないとします。 sheet2のB1に、 =VLOOKUP(A1,Sheet1!$A$1:$C$4,2,FALSE) C1に =VLOOKUP(A1,Sheet1!$A$1:$C$4,3,FALSE) 以下、A1のところをA2,A3…と変更して、 A列に会社名を入れれば、ご希望の通りになるかと思いますが… もちろん、A列に何も入ってないときはエラーとなってしまいますが。

lily3595
質問者

お礼

できました! 助かりました。 本当にありがとうございます。 お手数をおかけしました。

lily3595
質問者

補足

申し訳ありません。。。 そのままコピーをし、試したときには、できたのですが、実際に作成してあった表のなかに関数式を組んだところ、うまく表示されません。 もし、原因がわかるようであれば、教えてください。 社名、住所、電話番号は、「検索用」と名前をつけたシートのI2~K40(住所はI列、住所はJ列、電話番号はK列)にそれぞれ入力されています。 I列には名前を定義してあり、別Sheetである、Sheet1のF列には、入力規則を設定し、リスト(I列に入力された会社名)から名前を選択するようにしてあります。このうえで、I行でリストより会社名を選択したときには、G行に住所、H行に電話番号が表示され、I行になにも入力されていないときには、エラー表示されないように、関数を考えました。 Sheet1の「F393」に住所を表示させるため、以下のような関数式を入力しました。 =IF(ISBLANK(F394)," ",VLOOKUP(F394,検索用!I2:K40,2)) ところが、正確に表示されるものもあるのですが、まったく別の会社の住所が表示され、正確な住所が表示されない会社があるのです。もし、原因がわかる場合には、教えていただけると幸いです。宜しくお願いいたします。

その他の回答 (2)

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

>=IF(ISBLANK(F394)," ",VLOOKUP(F394,検索用!I2:K40,2)) VLOOKUP(F394,検索用!I2:K40,2) の最後に VLOOKUP(F394,検索用!I2:K40,2,false) と,falseをつけてもダメですか?

lily3595
質問者

お礼

「,false」と付け加えたところ、うまくいきました! 本当にありがとうございました。

  • wonder99
  • ベストアンサー率28% (85/302)
回答No.2

社名 住所 電話番号 A社 住所1 電話番号1 B社 住所2 電話番号2 C社 住所3 電話番号3 D社 住所4 電話番号4 と、上記の表(最上段に見出し付き)がSheet1にあるとして、 Sheet2のA1、B1、C1にそれぞれSheet1の最上段をコピーします。 B2には =DGET(Sheet1!A1:C5,Sheet1!B1,A1:A2) C2には =DGET(Sheet1!A1:C5,Sheet1!C1,A1:A2) で、A2に社名を入れるとB2に住所、C2に電話番号が出ます。 DGET関数はデータベース関数です。 =DGET(ア,イ,ウ)    と入力します。 アはSheet1のデータベース全体を指定します。 イはデータベースの中から返したい情報の見出しを指定します。 電話番号を表示させたいセルには、Sheet1の「電話番号」と入力された 「見出し」のセルを指定します。 ウは検索条件を指定します。 A1には常に「社名」と入っていて、B1に住所と電話番号を知りたい 社名を毎回入力すればよいしくみになります。

lily3595
質問者

お礼

やってみます! 「DGET関数」というのをはじめて知りました。 教えていただいて、ありがとうございます。

関連するQ&A

専門家に質問してみよう