• 締切済み

エクセル「DGET」関数の範囲について

お世話になります。 DGET関数に関して質問です。 =DGET (データベースの範囲,条件を満たすフィールド,検索条件) に対して、「データベースの範囲」に対してタイトル(AA~CC)をつけていますが、 データベース上に同じ名前があると、2件目以降のAA~CCの項目にあるデータは 条件で見つけてくれないようでした。(以下の条件だとヒットしない) ●条件 AA       BB    CC 2012/2/10 山田 \24,000 ●データベースの範囲 AA       BB    CC    AA       BB CC 2012/2/10 田中 \12,000                   2012/2/10 山田 \24,000 データベースをすべて縦書きにして同じ項目をなくせばもちろんヒットするのですが、 現金と通帳のデータ両方をデータベースの範囲として見て欲しいので、レイアウトを 横並びにしたいのですが、なにか方法はありますでしょうか? 別の関数でも構いませんのでよろしくお願いします。 やりたいのは、横並びにした両方のデータを参照して、 一致したものは入金が終わっているとしたのですが、その関係で同じタイトルにしてます。

みんなの回答

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

DGET関数は,該当するデータが無いと#VALUEに,また複数の行がヒットすると#NUMになるのは理解していますね? 方法1) =IF(ISERROR(DGET(左半分を検索)),0,DGET(左半分を検索))+IF(ISERROR(DGET(右半分を検索)),0,DGET(右半分を検索)) =IF(ISERROR(DGET(左半分を検索)),"",DGET(左半分を検索))&IF(ISERROR(DGET(右半分を検索)),"",DGET(右半分を検索)) のようにすれば,該当する左半分もしくは右半分を抽出できます。 ご利用のエクセルのバージョンがご質問に書かれていませんが,Excel2007以降を使っているならもちろんIFERROR関数を使えばもっと簡単になります。 方法2) ABC列に左半分,DEF列に右半分を置いてあるとして H,I,J列にクライテリアを作成します H1,I1,J1を「空っぽにしておく」 H2に =OR(A2=DATEVALUE("2012/3/3"),D2=DATEVALUE("2012/3/3")) I2に =OR(B2="田中",E2="田中") J2に =OR(C2=24000,F2=24000) と記入する H4に =DGET($A:$F,COLUMN(A1),$H$1:$J$2) と記入し,「右にあと5個」(M4まで)コピーして貼り付ける と出来ます。

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

項目名の終わりに1や2を付けて区別すればできるわけですからそのようにすればよいでしょう。元の項目名は同じだから崩したくないとは言ってもその場合の解決法はかなり難しくなるのですから止めるのが賢明だと思いますね。 DGET関数を使うことを考えるなら条件は何日以降とか何万円以上とかの条件になりますので難しくなります。例として示しておられるのは以上や以降が使われない場合ですのでDGET関数を使うこともなく解決できるのですが、そのような条件ではないのですね。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

同じ項目名を複数回使うというのは、DBとして不正です。 そのままではDGETは使えません。 代案として作業列を3列用意してAA同士の合計値、BB同士の結合文字列、CC同士の合計値を表示させ、そちらをDBとして使用してはいかがでしょうか。

関連するQ&A

専門家に質問してみよう