• ベストアンサー

『DGET関数』へオートフィルを適用させる手順

「『DGET関数』では、1つの組み合わせの絞り込み検索条件に対しまして、1つの結果だけが返されている」、という事情は分かっていますが、 其の"Criteria"の欄へ複数の種類の検索条件を盛り込みまして、 それぞれの組み合わせに個別の結果を返させる為に、 オートフィルを適用させ得るのか否かを存じていません。 従いまして、私の現状では、複数の"Criteria"の欄を別の箇所へ準備して、 個別に『DGET関数』を設定しませんと、各項目に適した解答を貰えませんので、 作業がややこしく、画面を見難くなっていますから、 もし其の状況からの脱却の為の手段が存在しているのでしたら、 其の具体的な手順を紹介して頂けませんでしょうか?

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

どうも心もとないですが >1つの組み合わせの絞り込み検索条件に対しまして、1つの結果だけが返されている 再掲: >結果が「1つに絞られる」場合に限り、DGET関数を利用する事が出来ます。 複数の行が合致した場合は最初に回答した通りにエラーとなり、決して「1つの結果だけ返ってくる」のではないことを理解してますね? さて。 再掲: >あなたが今抱えている具体的な「元データ」と「クライテリア」、それらから「結果してこうなってほしい姿」を目に見える姿で用意 のようにお話ししたのをすっかり無視して、全く具体的な状況説明をなさらずご相談を投稿なさいました。ご質問の直接の回答としては >其の状況からの脱却の為の手段が存在しているのでしたら、 >其の具体的な手順を紹介して頂けませんでしょうか? 具体的な手段としては、数式を使用してクライテリアを作成する事で、出来ます。 としかお答えしません。 もしも具体的な「こういう数式」を書いてもらわないと自分じゃ全く手も足も出ませんという状況ならば、次回は例えば次のようにして、目に見えるアナタのエクセルの姿を人にわかるようにキチンと説明する努力を示してください。 作成例: A列にA1に項目ラベル、A2以下にa,b,cなどの記述 B列にB1に項目ラベル、B2以下に数値などの記述が並んでいる クライテリアを設定し、A列がbであるB列の値、cであるB列の値などを、DGET関数のオートフィルで取り出せるようにしたい。 添付図: D列にクライテリアを作成し、D2、D3、D4に合致するB列のデータをDGET関数で参照させる。 手順: E2に =項目=INDIRECT("RC[-1]",FALSE) と記入し、以下コピー。 F2に =DGET(A:B,2,E1:E2) と記入し、以下コピー。

codotjtp
質問者

補足

具体例を盛り込めなかった内容ですのに、御教授を下さいまして、非常に有り難う御座います。 別のページ( http://okwave.jp/qa/q7585796.html )へ、 質問を続けさせて戴きました。

その他の回答 (1)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

以前にも同じようなご質問をされていますね。 その時の私の答えはDGET関数を使うことなく対応できる方法になります。その時の答えは次のようになっています。 基本的には次のような例題を理解することで関数による対応が可能でしょう。 シート1には例えばA1セルに氏名、B1セルに性別、C1セルに年齢、D1セルに県名などの項目名が有り、その下方に各データが入力されているとします。 そこでオートフィルタとなる検索の条件を入力する表をG1セルからJ2セルに作るとします。 G1セルには性別、H1セルには年齢(以上)、I1セルには年齢(以下)、J1セルには県名の文字をそれぞれ入力します。 そこでそれぞれの項目の2行目には検索したいデータを入力します。年齢の場合に30代の年齢を検索したい場合にはH2セルに30、I2セルに39と入力します。勿論検索に含めない場合には空白のセルとします。 そこでこれらのフィルタの条件を考慮した行をシート2に作成するとしてそのための作業列をシート1のE列に作成することにします。E2セルには次の式を入力して下方にドラッグコピーします。 =IF(IF(G$2="",0,IF(B2=G$2,1,0))+IF(H$2="",0,IF(AND(C2>=H$2,C2<=I$2),1,0))+IF(J$2="",0,IF(D2=J$2,1,0))=COUNTA(G$2)+COUNT(H$2)+COUNTA(J$2),MAX(E$1:E1)+1,"") シート2では結果を表示するための表でA1セルには次の式を入力してD1セルまでドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(ROW(A1)>MAX(Sheet1!$E:$E)+1,"",IF(INDEX(Sheet1!$A:$D,IF(ROW(A1)=1,1,MATCH(ROW(A1)-1,Sheet1!$E:$E,0)),COLUMN(A1))="","",INDEX(Sheet1!$A:$D,IF(ROW(A1)=1,1,MATCH(ROW(A1)-1,Sheet1!$E:$E,0)),COLUMN(A1)))) これで年齢などの幅を設けた条件の設定の仕方などを参考にすることですべてのケースについて対応ができるものと考えます。 その際のご質問で作業列に関することですが、条件が満たしている列では1がそうでなければ0として各列でのそれらの値の合計をもとめ、すべての条件がその行の各列で満たされていればそれらの行について上から番号を付けています。 ご参考になればよいのですが。

codotjtp
質問者

補足

入門者向けの御配慮を下さいまして、誠に有り難う御座います。 下方向へとオートフィルでドラッグする場合には、たとえ其処へ"Column"関数を盛り込みましても、 参照先Cell番地の値が全く変わらないのだろう、と私は勝手に認識して参りましたので、 最後の関数の末尾の"Column"関数は定数にも置き換えられ得るのではないか、と愚かな私は考えてしまったのですが、 其の認識は私の根本的な誤解なのでしょうか? 酷く拙いレベルの補足質問で畏れ入りますが、 御教授を賜れますと助かります。

関連するQ&A