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

このQ&Aに関連する最新のQ&A

A 回答 (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に複写
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/07/17 19:50

何かの練習問題ですか?


>『空白セルの「B55~B60」に値を返す。』
え~と!再確認させて下さい!
この場合、B54に「名前」と記載して指定をすれば
B55からデータベース表から参照してヒットした数が
抽出されます(無い場合は空白のまま)
しかし、6こ以上あればB60を超えてヒットした分の
行まで記載してします。
その場合は、2)での範囲指定をB54:B60でOK
です!

どうしても関数での回答が必要な問題でしたら、データ
の範囲と、『空白セルの「B55~B60」に値を返す。』
部分が分かれば数式でも可能ですが・・・補助列を使わない
限りだらだらした長~い数式になってしまいますけど!

この回答への補足

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

補足日時:2001/07/14 09:13
    • good
    • 0

三度こんばんは(^^;



スミマセン!こだわっている訳では無いのですが!

>決められた空白セルに値を返す
オートフィルタではなくフィルタオプション
では、好きな場所(決められた空白セル)に抽出可能です。
そういう意味ではないのでしょうか?
2.のセル位置を決められた空白セル位置の1つ上のみ
で指定すれば、ヒットしたもの全てがその下の行以降に
抽出されます。そしてヒットしない場合は空白のまま!

>抽出範囲設定は出来なくて
範囲は指定する必要は無く、抽出したい位置のスタート
位置の上部に記載した「名前」の位置のみ指定なのですが
それも不可であれば、おっしゃる通り不可ですが!

この回答への補足

 何度も有難うございます。
 
 >上部に記載した「名前」の位置のみ指定

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

補足日時:2001/07/14 01:47
    • good
    • 0

こんばんは



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

この回答への補足

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

補足日時:2001/07/14 00:53
    • good
    • 0

少々わかり辛い部分の訂正です!



2.抽出したい位置の先頭セルに 名前 と入力



2.抽出結果を出力したい場所の先頭セルに 名前 と入力

です。
    • good
    • 0

こんばんは!



動的に変化するのでは無く、既に入力済みのデータ範囲から単に抽出するだけであればフィルターオプションがよろしいかと!

1.適当なセルに検索条件を記載

住所
東京*

2.抽出したい位置の先頭セルに 名前 と入力

3.データベース範囲を選択
  データ → フィルタ → フィルターオプション
 [抽出先] 指定した範囲 をチェック
  リスト範囲 既に入力されていると思います
  検索条件範囲 2. の項目も含めた記載範囲
  抽出範囲 3.で記載したセル

ご希望が関数であれば外しています!

この回答への補足

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

補足日時:2001/07/14 00:04
    • good
    • 0

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



参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=100010

この回答への補足

>=IF(COUNTIF(対象セル,"*東京*"),"○","×")

この間数式を使って"○"の部分の値を"東京*"に住む「人名」を返す数式

 =IF(COUNTIF(対象セル,"*東京"),"ここに入る関数式が解りません","")

"ここに入る・・・"の部分にデータベース関数のDGETを使って値を求めると当てはまる答えを1つしか返さなく、複数の回答を得るには他の関数を使わないと出来ないと言うところまでは解るのですが・・・なんの関数を代入すれば良いでしょう?

補足日時:2001/07/13 22:26
    • good
    • 0

難しく考えなくても、


IF関数でできるとおもいますが。
(抽出するの、名前だけですよね?)

A列のセルに、以下のように入力しました。
A3に、東京都新宿区
A4に、埼玉県さいたま市
A5に、東京都渋谷区

で、A列の隣のB列に適当な氏名をいれました。

で、数式は、適当なセルをアクティブにして、
=IF(A2>="東京",B2,"")

したら、できましたけど。

ところで、これ、関数使わなくてはならないんですか?
普通は、フィルタオプション使うと思うけど・・・。

この回答への補足

>で、数式は、適当なセルをアクティブにして、
>=IF(A2>="東京",B2,"")

試してみたのですが、「氏名」は返されませんでした。

 フィルターでは、条件を満たす値が無い場合「空白セル」を返すと言う設定が出来ないので、使えないと思うのですが・・・出来るのでしょうか ?

補足日時:2001/07/13 22:43
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで種類を数える関数が無いのは何故?

エクセルで種類を数える関数が無いのは何故なんでしょうか?

エクセルで種類を数えるには、いくつかの関数を組み合わせるのが一般的ですよね?
直接数える関数が無いのは、訳があるんでしょうか?

Aベストアンサー

>>エクセルで種類を数える関数が無いのは何故なんでしょうか?

やっぱり、そういう関数が必要な方が全体からみたら少数派だと、エクセルの開発者たちが考えているからではないかと思います。
また、既存の関数を組み合わせたら、対処可能だから、無理して新しい関数を作る必要性もない、開発の優先順位が低いって判断もあるでしょうね。

私は、エクセルの表を作ったり、エクセルVBAでプログラムを作ったりしますけど、そういう関数が必要になったことが全くありませんし。

Qエクセル関数の質問    対象範囲の中で、一番上の行の値を返す関数

A1~A9までの9つのセルに、A9からA1へと下からデータが連続して埋まっていきます。
この範囲で値の入っている最上のセルの値を返す関数は作ることができませんでしょうか?

行は100行くらいになる予定です。

最下の行を返す関数は見つけました。同じように作れないでしょうか?

  =INDEX(A:A,COUNT(A:A))

よろしくお願いします

Aベストアンサー

>A1~A9までの9つのセルに、
なのに
>行は100行くらいになる予定です
の意味がよく理解できませんが、

A1:A9の範囲で値が入力されている一番上のセルの値を求める式の一例は少し難しくなりますが以下になります
 =INDEX(A:A,MIN(INDEX(SUBSTITUTE((A1:A9<>"")*1,0,10^5)*ROW(A1:A9),)))

たぶんもっと簡単な式を教えてくださる回答者様も出ると思いますよ

Qエクセルの関数で

エクセルの関数辞典を見ていたら、CUMPRINC関数というのがありました。
しかし、エクセルの「挿入」→「関数」→関数の分類で「財務」というのを選択したのですが、一覧表に載っていません。
どこに載っているのでしょうか?
どうすればこの関数を使えますか?
ちなみにシートの上でやっても関数の反応をしませんでした。

Aベストアンサー

Yahooで検索してみると、参考URLが引っかかりました。

参考になりませんか?

参考URL:http://money-sense.net/doc/20041215_224257.php

Qエクセル関数を使い、2つの条件にあった値(文字)を2つの条件にあったセルに返す。

こんばんは。
いつもお世話になります。
以下の関数に関してよい方法が見当たりませんでしたのでとぴにより質問をさせて頂きます。

{シート1}
A    B   C   D
生徒ID 算数 国語 社会
A001
A002
A003
...


{シート2}
A    B   C
生徒ID 教科 評価
A001  算数  C
A001  国語  B
A001  社会  A
A002  算数  B
A002  国語  A
A002  社会  C
...

やりたいこと。
{シート1}の生徒A001の算数のセルに{シート2}の2つの条件(A001,算数)にあう評価(A,B,C)を返したい。

以前、以下のような数式を教えて頂きました。
このときは評価(文字)ではなく数値を返すものなので達成できましたが文字にしてからエラーが出てしまいます。
-------
◆Sheet1のB2の式

B2=SUMPRODUCT((Sheet2!$A$2:$A$10=$A2)*(Sheet2!$B$2:$B$10=B$1)*Sheet2!$C$2:$C$10)
-------

ご指導頂きたく、どうぞ宜しくお願い致します。

こんばんは。
いつもお世話になります。
以下の関数に関してよい方法が見当たりませんでしたのでとぴにより質問をさせて頂きます。

{シート1}
A    B   C   D
生徒ID 算数 国語 社会
A001
A002
A003
...


{シート2}
A    B   C
生徒ID 教科 評価
A001  算数  C
A001  国語  B
A001  社会  A
A002  算数  B
A002  国語  A
A002  社会  C
...

やりたいこと。
{シート1}の生徒A001の算数のセルに{シート2}の2つの条件(A001,算数)にあう評価(A,B,...続きを読む

Aベストアンサー

例データ Sheet1 A1:C10
生徒ID教科評価
A001算数C
A001国語B
A001社会A
A002算数B
A002国語A
A002社会C
A003算数B
A004国語D
A005社会D
Sheet1に(下記A、B、C、Dは式の結果答えも出た様子)
生徒ID算数国語社会作業列
A001CBA0
A002BAC3
A003BDD6
式を簡単にするため、作業列はどこか秋列に作る(ここではF列とする)
式は=MATCH(A2,Sheet2!$A$2:$A$100,0)-1
意味は生徒IDの初出(開始)行のB1からの隔たり行数を出している。
ーー
B2に
=OFFSET(Sheet2!$A$2,$F2+MATCH(B$1,OFFSET(Sheet2!$B$2,$F2,0,100,1),0)-1,2)
B2no式をB列下方向に生徒数分、b2:B4の式を右方向に科目数分
式を複写する(+ハンドルを引っ張る等)
結果
上記の通り。
作業列はF列の式をB2の式にネストして、、組み込めば不要となるのは
ご存知でしょうが、理解のため、そのままにします。
ーー
やっているのはMATCH関数で生徒IDや科目命をみつけている。
ただし(B2以下でなく)その生徒IDの開始行以下で科目名を探さないといけないので、その分修正しているので複雑化している。

例データ Sheet1 A1:C10
生徒ID教科評価
A001算数C
A001国語B
A001社会A
A002算数B
A002国語A
A002社会C
A003算数B
A004国語D
A005社会D
Sheet1に(下記A、B、C、Dは式の結果答えも出た様子)
生徒ID算数国語社会作業列
A001CBA0
A002BAC3
A003BDD6
式を簡単にするため、作業列はどこか秋列に作る(ここではF列とする)
式は=MATCH(A2,Sheet2!$A$2:$A$100,0)-1
意味は生徒IDの初出(開始)行のB1からの隔たり行数を出している。
ーー
B2に
=OFFSET(Sheet2!$A$2,$F2+MATCH(B$1,OFFSET(She...続きを読む

Qエクセルの関数 ネスト

エクセルの関数 ネスト

エクセルの関数で、ネストさせるときがあるとおもうのですが、

関数を内側に書いたらよいのか外側に書いたらよいのか分からなくなる時があります。

エクセルの関数に関してわかりやすく書いてあるページなどありますか。

Aベストアンサー

こんばんは

Excel2003までは、ネストが7まで、2007では64までが可能です。
http://www.google.co.jp/search?hl=ja&source=hp&q=excel+%E3%83%8D%E3%82%B9%E3%83%88%E3%80%802003%E3%80%802007&aq=f&aqi=&aql=&oq=&gs_rfai=

「仕様上は可能」でも、複雑なネストは間違いが生じやすいですし、変更もしにくくなります。「出来るだけネストはしない」「適宜、中間結果をセルに出力する」という方法を採った方が、間違いが少なく、柔軟性のあるシステムになると思います。

>エクセルの関数に関してわかりやすく書いてあるページなどありますか。
関数の個別の機能ならば、Webサイトも書籍も多数あるのですが、「組み合わせて使う」というのはその場その場での発想になってしまうと思います。

Qエクセルの質問です。検索値の中で一番下の値を返すには?

例えば、下記のような場合に、
Aであれば126
Bであれば346とセルに表示させたいのですがどのような関数を使えば良いでしょうか。ご教授くださいm(_ _)m
英字列と数字列は別セルです。

A 123
A 124
A 125
B 345
B 346
A 126


Aベストアンサー

こんばんは!
色々やり方はありますが・・・

↓の画像のように、A・B列にデータがあるとします。

E2セルに
=INDEX(B$1:B$1000,MAX((A$1:A$1000=D1)*ROW(A$1:A$1000)))

これは配列数式になりますので、Ctrl+Shift+Enterで確定!
この画面からコピー&ペーストする場合は
上記数式をドラッグ&コピー → E2セルを選択 → 数式バー内に貼り付け → そのまま(編集可能なまま)
Ctrl+Shiftキーを押しながらEnterキーで確定!
数式の前後に{ }マークが入り配列数式になります。
E2セルのフィルハンドルで下へコピー!
これで画像のような感じになります。

※ B列が必ず数値である!という場合は
=LOOKUP(10^10,IF(A$1:A$1000=D1,B$1:B$1000))
この数式も配列数式ですので、Ctrl+Shift+Enterで確定!
これでも大丈夫だと思います。m(_ _)m

Qエクセル関数の解読サイトなんてありますか?

エクセル関数の解読サイトなんてありますか?

いつもお世話になっております<(_ _)>

エクセルファイルに関数の入った数式が入力されています。
セルごとに複数の関数が入っていますが、私にはちっともわかりません。

そこで質問です。
こんなとき「エクセル関数を解読」してくれるようなサイトってありませんか?

たとえば検索窓があってそこに「=SUM(S1:S13)」わからなくて困っている関数式を入力。
すると答えの別ボックスに「S1~S13までの数値の合計」と出てくるようなサイト。

それに近いサイトでも良いので知っている方がいらっしゃればぜひ、教えてください<(_ _)>

Aベストアンサー

もし、

=IF(E14="","",IF(O14="",(IF(E14>"18:00"*1,"18:00",E14)-IF(C14<="8:00"*1,"8:00",C14))*24*1300,(IF(E14>"18:00"*1,"18:00",E14)-IF(C14<="8:00"*1,"8:00",C14))*24*1625))

だったら、どういう文章が出て欲しいのでしょうか?

もしE14が空白だったら、
 空白、
そうじゃなかったから、
 もしO14が空白だったら、
  (もしE14が18:00より大きかったら18:00、そうじゃなかったらE14)-(もしC14が8:00以下だったら8:00、そうじゃなかったらC14)×24×1300
 そうじゃなかったら、
  (もしE14が18:00より大きかったら18:00、そうじゃなかったらE14)-(もしC14が8:00以下だったら8:00、そうじゃなかったらC14)×24×1625

って感じですか?
数式をそのまま読解したほうが解りやすくないですか?

QExcelの関数で、検索条件(複数)を満たす場合値を返す方法について質

Excelの関数で、検索条件(複数)を満たす場合値を返す方法について質問です。

セルA2にある文字列が、別ファイルのA列にある文字列を含む場合セルB2に○を、含まない場合は×を入力する関数を教えて下さい!!

---------
book1.xls シート1 A2にある文字列が、
book2.xls シート1 A列にある文字列のいずれかを含む場合、
book1.xls シート1 B2に「○」を、含まない場合は「×」を結果として反映させたいです。
※book1.xlsのリストは全角カナ、book2.xlsのリストは半角カナ です。
※book2.xls シート1にある検索条件は行列共に増える可能性があります。

マクロやVBAではなく関数で行うことは可能でしょうか?

勉強不足ですみません。
色々調べて試しているのですが、なかなかうまくいかないのでお力をお貸し下さい。

よろしくお願いします。

Aベストアンサー

No.6です!
たびたびごめんなさい。

今後Book2の行・列ともに増える可能性があります!の件に対応できるように
前回の方法を少し発展してみました。
もう一度画像をアップします。
Book2のデータにまず、入力することがない!という「#」を入力し、それを数式の範囲に指定します。
(このデータ量は適宜変更してみてください。)
そして数式に入力セルすべてを範囲指定しておき、「#」が入力してあるセルに
増えていくデータを入力するとBook1に反映されると思います。

数式は前回と同じですが、Booi1のC2セルに
=IF(B2="","",IF(OR(ISNUMBER(FIND([Book2]Sheet1!$A$1:$B$10,B2))),"○","×"))
(前回同様配列数式ですので、Shift+Ctrlキーを押しながらEnterキーで確定です)

これをオートフィルで下へコピーします。

以上、何度も失礼しました。m(__)m

Qエクセル関数を、書き写して分析できるツールはある?

タイトルの件、質問します。

エクセルの関数を分析する際に、エクセルの数式バーや、セルに入っている関数を
F2を教えて見るのでは、見にくい場合があります。

現在は、私は、メモ帳に関数をコピーして、分析したり、修正したりしています。
エクセルの機能or他ソフトで、関数を分析できるツールはあるのでしょうか??

【エクセルバージョン】
2003、2007

Aベストアンサー

難解な数式を理解したいとき,最も便利に利用できるのは,2003ではツールメニューのワークシート分析にある「数式の検証」です。
2007では数式タブにあります。

メンドクサイ数式のセルで数式の検証を使い,どの関数やどのカッコから計算が進んでいくのかを1ステップずつトレースして理解します。また意図しない結果がどの段階で発生しているのか追跡します。

このやり方は勿論間違った数式(意図しない結果が出てきた場合)を追跡するのにも使いますが,むしろ誰かに教わった「正しい数式」を理解する時に便利な方法です。
そもそも計算が通っていない(たとえばカッコの対応が間違えていて,Enterしても受け付けてくれないようなミスをしている場合)には使えません。



また,数式バーの中で数式の「中」にカーソルを入れて左右の矢印キーでカーソルを動かしていったときに,「(」や「)」をまたいだ瞬間に,対応する「閉じカッコ」「始まりのカッコ」が色つきで強調表示されるのを確認しながら,カッコの対応がまちがえてないかなどを調べるのも簡易な良い方法です。


あまり使わない方法ですが,数式の中で適宜ALT+Enterを打って「セル内改行」してしまい,数式を縦に分解して書いてみるのも整理しやすい方法のひとつです。

難解な数式を理解したいとき,最も便利に利用できるのは,2003ではツールメニューのワークシート分析にある「数式の検証」です。
2007では数式タブにあります。

メンドクサイ数式のセルで数式の検証を使い,どの関数やどのカッコから計算が進んでいくのかを1ステップずつトレースして理解します。また意図しない結果がどの段階で発生しているのか追跡します。

このやり方は勿論間違った数式(意図しない結果が出てきた場合)を追跡するのにも使いますが,むしろ誰かに教わった「正しい数式」を理解する時に便利...続きを読む

QEXCELで列の値を返す関数

いつもお世話になっております。
EXCELで表をつくり、一番新しいデータが入力されている列の値を返したいのです。具体的には、

  A  B  C  D  E   D
 東京 大阪 名古屋 広島 福岡
1 120円   450円     ←側から見て一番最初の入力情報の列
2    50円     20円
3       10円
4             120円

上の表の場合、
1行目の場合は名古屋
2行目は広島
3行目は名古屋
4行目は福岡という値をD列に返したいのです。
関数または、マクロをご教示くださいますよう、お願いいたします。

Aベストアンサー

返すのはF列では?
F2=INDEX(A$1:E$1,1,MATCH(MAX(A2:E2)+1,A2:E2,1))


人気Q&Aランキング

おすすめ情報