• ベストアンサー

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

 エクセル関数の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

  • エクセルのデータベース関数について

    エクセルのデータベース関数について質問します。 データベースの指定された列を検索し、条件を満たすレコードの中で数値が入力されているセルの個数を数えたいと思います。が、その列が複数あり、また、条件も複数ある場合、DCOUNT関数を使うと、データベース関数に指定した条件が設定されているセル範囲をいくつも設定しなくてはならないのでしょうか? 以前、Lotusを使っていた時は、#and#という形で、条件をいくつも指定することが出来たのですが、そういったことは出来るのでしょうか? わかりにくい表現かもしれませんが、よろしくお願いします。

  • 関数で抽出したセルの一部の文字を変更したい

    DGET関数を使って、別シートよりデータをひっぱってくるように設定しています。 元の値はセルに入っている文字の一部のみ文字の色を変更、太字、下線をひくようにしていますが、 関数ではその文字の条件まで抽出する方法が見当たりません。 DGET関数によって抽出したデータにおいて、「あいうえおかきくけこ」のうち「あ」だけ文字色を赤色、太字、下線をひくようにしたいです どなたか詳しい方やり方を教えてください。 宜しくお願いします。

  • エクセルでこんな抽出は可能ですか?

    関数を使用して抽出したいと思います。 まずシート1とシート2を使います。 シート2には住所録などの内容が5000件くらいあるものとします。 その住所録には「〒」「住所」「電話番号」「氏名」などのフィールドを作っておきます。 そして、シート1には 例えば「氏名」という欄をA1に書き、B1の空白のセルに「山田」と入力をすると、「山田」が含まれるものをすべて表示したいと思います。 このすべて表示とういうのは「山田」を含む「氏名」だけ表示されるのではなく、「〒」「住所」「電話番号」「氏名」を表示したいのです。 オートフィルタやフィルタオプションは極力使用したくないので、関数で出来ないものかと考え中です。 また、抽出結果を表示する欄はシート1のA3あたりからお願いします。 こんな文書で意味が分かった方、よろしくお願いします

  • EXCELのデータベース関数について(DCOUNTA?)

    EXCELのデータベース関数について(DCOUNTA?) 住所録を作成していますが、ポイントは3点あります。 (1)1年間に入社した人(雇用形態)毎に人数を求めたいのです。 (2)今年度中に退職した方は残したままで、人数を計算したいのです。(退職日を入力) (3)今年度は人が増えるため、全体をテーブルとし、雇用者1人事をレコードとして処理していますが、そのためCOUNTIFSなどは用いず、簡単に計算するためデータベース関数を利用したいと考えています。 DCOUNAの関数は(Database,フィールド,Criteria)となりますが、Criteriaの条件を雇用形態と退職日を横に並べた値としたいが、退職日を空白の人を人数としたい為、空白とすると条件を選んでいないとして雇用形態のみ合致した人数をカウントしてしまうようです。 良い方法あればご教示ください。

  • excelの dget関数で レコードが複数

    excel2000を利用しています。 dget関数を用いて計算し、条件を満たすレコードが複数存在する場合は、エラー値 「#NUM!」 が返されますが、 その複数のレコードを表示させる方法はないでしょうか?

  • エクセルの条件に合うデーターを抽出する関数、

    エクセルのリスト1の住所録の情報から、リスト2に、東京都の人のデータのみを抽出する関数、また、何も記載がないセルは、そのままにしておく。

  • エクセルの関数について

    エクセルの関数について いつもご回答者の皆様方にはお世話になっております。 また一つ関数で実現したいことができたのですが、 添付画像のように同一シート内に形式が同じデータベースが複数あった場合に、 指定した条件のデータベースを参照し、値を返すような関数は可能でしょうか? B22セルで2010/1/1と指定した場合に、A2-B5のデータベースを参照し、さらにC22セルで指定してある「りんご」の個数を表示させるといった内容になります。 B22とC22の値を変えるだけで、それぞれのデータベースの指定した項目の個数を割り出したいのです。 識者の方々よろしくお願いいたします。m(_ _)m

  • エクセル 関数 別シートへの抽出

    エクセル関数について質問します。 「数値の入ったセルだけを、その行ごと丸々別シートに抽出する方法」 について教えてください。 例、C列に空白セルと1、2や3など、数値の入ったセルがあります。空白セル以外の数値の入ったセルを、その行ごと別シートに抽出したい。 C3とC5に数値が入ってる→3行目と5行目を別シートに抽出する。 このようなことは関数でできるのでしょうか? マクロでないと無理でしょうか? お力をお貸しください。 よろしくお願いします。

  • エクセル関数

    データベースを作っていて、抽出した数値を合計する関数を入力しています。SUMIFを使っているんですが、SUMIFだと検索条件が1つしか選べません、複数の検索条件で抽出した数値を合計するにはどうすればいいでしょうか??できればフィルタは使わない方法でおねがいします。

  • Excel 値の入っているものを抽出して連結

    Excel2013を使用しています。 行に値の入っているセルのみを別セルにひとまとめにしたいのです。 イメージのBからE列の値をF列に抽出して連結させる関数をお教えください。

専門家に質問してみよう