• ベストアンサー

エクセル関数でデーターベースから値を抽出するには・・・

 エクセル関数のDGETはデータベースから1つの値を抽出しますよね。でも条件を満たす値が複数ある時には「#NUM」が返されて抽出出来ない。条件を満たす値を複数返すような関数は無いのでしょうか ?   住所、氏名、年齢、職業、のデータの中で「"東京*"」にすむ人の名前を抽出しなさい。「"東京*"」に住んでいる人がいない場合は空白セルを返すようにする、と言った内容です。   どなたか教えて下さい。

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

  • ベストアンサー
  • comv
  • ベストアンサー率52% (322/612)
回答No.8

こんにちは! >「名前」の設定が出来ない 設定ではなくB54セルに記載するのみなのですが! これも不可となると元々DGETなどのデータベース 関数での条件式の書き込みも不可と言うことですね! 残るは関数のみ 1例として(だらだら長いです^^;)    A   B  C   D 1 住所 氏名 年齢 職業 2  3 ・ ・ 13 14 条件 「同姓同名はいない」 「空白セルの「B55~B60」に値を返す。」として セルB55 =IF(COUNTIF($A$2:$A$14,"東京*")>ROW()-55,INDEX($B$2:$B$14,MATCH("東京*",$A$2:$A$14,0)),"") セルB56 =IF(COUNTIF($A$2:$A$14,"東京*")>ROW()-55,INDEX($B$2:$B$14,MATCH(B55,$B$2:$B$14,0)+MATCH("東京*",INDIRECT("A14:A"&2+MATCH(B55,$B$2:$B$14,0)),0)),"") B56の数式をB57~B60に複写

mikarin-h
質問者

お礼

有難うごどいました。大変参考になりました。

その他の回答 (7)

  • comv
  • ベストアンサー率52% (322/612)
回答No.7

何かの練習問題ですか? >『空白セルの「B55~B60」に値を返す。』 え~と!再確認させて下さい! この場合、B54に「名前」と記載して指定をすれば B55からデータベース表から参照してヒットした数が 抽出されます(無い場合は空白のまま) しかし、6こ以上あればB60を超えてヒットした分の 行まで記載してします。 その場合は、2)での範囲指定をB54:B60でOK です! どうしても関数での回答が必要な問題でしたら、データ の範囲と、『空白セルの「B55~B60」に値を返す。』 部分が分かれば数式でも可能ですが・・・補助列を使わない 限りだらだらした長~い数式になってしまいますけど!

mikarin-h
質問者

補足

 はいそうなんです。ですから問題内容の変更は無理で「名前」の設定が出来ないのです。ですから何らかの関数式では無いかと思うのですが・・・

  • comv
  • ベストアンサー率52% (322/612)
回答No.6

三度こんばんは(^^; スミマセン!こだわっている訳では無いのですが! >決められた空白セルに値を返す オートフィルタではなくフィルタオプション では、好きな場所(決められた空白セル)に抽出可能です。 そういう意味ではないのでしょうか? 2.のセル位置を決められた空白セル位置の1つ上のみ で指定すれば、ヒットしたもの全てがその下の行以降に 抽出されます。そしてヒットしない場合は空白のまま! >抽出範囲設定は出来なくて 範囲は指定する必要は無く、抽出したい位置のスタート 位置の上部に記載した「名前」の位置のみ指定なのですが それも不可であれば、おっしゃる通り不可ですが!

mikarin-h
質問者

補足

 何度も有難うございます。    >上部に記載した「名前」の位置のみ指定 指定についてですが、おっしゃる通り名前の位置指定が出来れば問題は無いのですが、『空白セルの「B55~B60」に値を返す。』と言うような感じで設定の変更は出来ない状態での作業なんです。ややこしくてすいません。  

  • comv
  • ベストアンサー率52% (322/612)
回答No.5

こんばんは >空白セルを返すと言う設定が出来るのであればそれでも良いのですが 結果、条件に合致しなければ抽出されず空白になりますが、それでは不可なのでしょうか?

mikarin-h
質問者

補足

 ごめんなさい説明不足でした。 抽出範囲設定は出来なくて、決められた空白セルに値を返す と言う設定の上での動作になります。ですからフィルタ機能では無理だと思うのです。

  • comv
  • ベストアンサー率52% (322/612)
回答No.4

少々わかり辛い部分の訂正です! 2.抽出したい位置の先頭セルに 名前 と入力 は 2.抽出結果を出力したい場所の先頭セルに 名前 と入力 です。

  • comv
  • ベストアンサー率52% (322/612)
回答No.3

こんばんは! 動的に変化するのでは無く、既に入力済みのデータ範囲から単に抽出するだけであればフィルターオプションがよろしいかと! 1.適当なセルに検索条件を記載 住所 東京* 2.抽出したい位置の先頭セルに 名前 と入力 3.データベース範囲を選択   データ → フィルタ → フィルターオプション  [抽出先] 指定した範囲 をチェック   リスト範囲 既に入力されていると思います   検索条件範囲 2. の項目も含めた記載範囲   抽出範囲 3.で記載したセル ご希望が関数であれば外しています!

mikarin-h
質問者

補足

 フィルター機能で当てはまる条件が無い場合に、空白セルを返すと言う設定が出来るのであればそれでも良いのですが、出来ないように思うのですが・・・?

  • brogie
  • ベストアンサー率33% (131/392)
回答No.2

似たような質問が過去ログにありました

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=100010
mikarin-h
質問者

補足

>=IF(COUNTIF(対象セル,"*東京*"),"○","×") この間数式を使って"○"の部分の値を"東京*"に住む「人名」を返す数式  =IF(COUNTIF(対象セル,"*東京"),"ここに入る関数式が解りません","") "ここに入る・・・"の部分にデータベース関数のDGETを使って値を求めると当てはまる答えを1つしか返さなく、複数の回答を得るには他の関数を使わないと出来ないと言うところまでは解るのですが・・・なんの関数を代入すれば良いでしょう?

  • himehime
  • ベストアンサー率37% (133/354)
回答No.1

難しく考えなくても、 IF関数でできるとおもいますが。 (抽出するの、名前だけですよね?) A列のセルに、以下のように入力しました。 A3に、東京都新宿区 A4に、埼玉県さいたま市 A5に、東京都渋谷区 で、A列の隣のB列に適当な氏名をいれました。 で、数式は、適当なセルをアクティブにして、 =IF(A2>="東京",B2,"") したら、できましたけど。 ところで、これ、関数使わなくてはならないんですか? 普通は、フィルタオプション使うと思うけど・・・。

mikarin-h
質問者

補足

>で、数式は、適当なセルをアクティブにして、 >=IF(A2>="東京",B2,"") 試してみたのですが、「氏名」は返されませんでした。  フィルターでは、条件を満たす値が無い場合「空白セル」を返すと言う設定が出来ないので、使えないと思うのですが・・・出来るのでしょうか ?

関連するQ&A