• ベストアンサー

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

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

  • m_s_m
  • お礼率54% (56/103)

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.4

やりたいことは >例えば 列がA,B,C,Dとあり、おのおのに、1から5までの数が入っていたとします。そこで、列Aで1かつ列Cで3が入力されているセルの数を数え・・・ ということなので、A1からC5までデータが入っていれば、  =SUM(IF(A1:A5=1,IF(C1:C5=3,1,0),0)) と数式の窓に入力して、Ctrl+Shift+Enter で登録したらでませんか。 配列数式で、セルには {=SUM(IF(A1:A5=1,IF(C1:C5=3,1,0),0))} と登録されます。 A列が1でC列が3の場合は1、その他は0としてそれを集計しています。

m_s_m
質問者

お礼

ありがとうございます。 =SUM(IF(A1:A5=1,IF(C1:C5=3,1,0),0)) の数式で出来ました。 やはり、LotusとExcelは同じように見えて、違うものなんですねぇ。 ただ、配列数式の概念がいまいちつかみ切れていないので勉強したいと思います。 ありがとうございました。

その他の回答 (4)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.5

追加です。 >以前、Lotusを使っていた時は・・・ Lotusもいいソフトでした。一時期、本当にお世話になりました。 ただ、Excelを使い始めて、Lotusを使う気にならないのが本音ですね。社内でも使用を止めていますし、全部移植してしまいました。 ただ、Excelはデータベースソフトではないので余り複雑な処理は保全面から考えて好ましくはないと思います。質問のような事例は、Access等なら間単にでます。 #3の事例は、 =SUM(IF(B2:B96="男",IF(C2:C96>=20,IF(C2:C96<30,IF(D2:D96>=2000,1,0),0),0),0)) と入力して、配列数式として登録すれば答えは出るはずです。当然、男に変えても、カウントの変わりに金額も集計できます。Excelも中々やりますね。

noname#598
noname#598
回答No.3

私も何度か、これに挑戦してきましたが、 あきらめたので、どうしても条件が多岐に渡るデータベースを扱う際や、 マクロを使いたい場合は1-2-3 「見せる」、「他人とのデータの共有する」ためのデータベースはエクセルと、 完全に使い分けています。 どうしてもエクセルでこれをやりたいときは、 やむを得ず条件設定のためのシートを新たに作って、 面倒くせ~とボヤキながらセル参照しています。 ただ、セルを節約する工夫はできると思います。 例えば、条件が全部で4つで、そのうち3つが同じで1つだけ異なるときは、 このようにします。実際にこのようなサンプルを作ってやってみました。 サンプル: B列は性別をヘッドとして、男または女 C列は年齢をヘッドとして、年齢の数値 D列は購入額をヘッドとして、商品を購入した金額 これを95件、ランダムに発生しました。 (購入金額は500~5000、年齢は15~75を動く) 共通事項1:20歳以上(ヘッドは年齢) 共通事項2:30歳未満(ヘッドは年齢) 共通事項3:2000円以上(ヘッドは購入額) この共通事項で、さらに男女別(ヘッドは性別)に集計する場合 1段目:性別,年齢,年齢,購入額,性別 2段目:男,>19,<30,>1999,女 (上手く上下に表そうと思ったのですが、無理なのでカンマ区切りとしました) このように5×2の条件シートを作ります。 (共通事項を真ん中に、双反する条件を両端におくのがポイント) =Dcount(対象範囲,2,条件範囲)については、 対象範囲はガッチリ固定し、条件範囲は固定しません。 条件を満たす男性を出力したいセルだけ入力し、 それを右にコピーすれば自動的に条件を満たす女性の数が出ます。 LOTUSでは、逆にこういうときは条件を書き直さないといけないのですよね。 (私の場合は、検索と置換を使って対処しています) セルは確かに節約できるけど、データベースが大きくなると、 ものすごく式が重くなるんですよね。 どっちもどっちなのかなあ。 書いているうちに自信がなくなりました(笑)

  • usajun
  • ベストアンサー率40% (10/25)
回答No.2

COUNTIF(範囲,AND(条件1,条件2))というのはどうでしょう?

m_s_m
質問者

お礼

ありがとうございます。 やってみたのですが値が0になってしまいます。 ちなみに COUNTIF(範囲,AND(条件1,条件2))  の範囲というのは1つの範囲しか出来ないのですよね? 例えば 列がA,B,C,Dとあり、おのおのに、1から5までの数が入っていたとします。そこで、列Aで1かつ列Cで3が入力されているセルの数を数え、他の表に集計させたいと思っています。 なにか別の機能を使ったりするのでしょうか? 出来たら、関数でやりたいと思います。

  • yuhki_f
  • ベストアンサー率32% (32/99)
回答No.1

EXCELでは、次のような書式になるはずです。 AND(条件1,条件2) COUNTIFという関数も準備されているので、HELPか何かで確認して見られてはいかがでしょうか。用途によっては使い勝手がよい関数です。

m_s_m
質問者

お礼

ありがとうございます。 たしかに、1つの条件だと、COUTIFは使い勝手がよいですよね。 そこで、条件がいくつもあるので、 AND(COUNTIF(条件),COUTIF(条件)) でやってみたのですが、値がTRUEとなってしまいます。 やり方が違うのでしょうか?

関連するQ&A

  • Dcout関数の条件式で空白を設定したい

    よろしくお願いします。 Excel2000で「Dcout」関数の条件式についての質問です。 データベースのとある列が空白のレコードのみカウントしたいのですが、 例えば   A    B 1 氏名 生年月日 2 ○○ 1980/07/04 というような表があります。 Dcount関数でB列の生年月日が空白の個数を求めたいのです。 条件で生年月日を「=””」としてもうまくいきません。 空白を指定する条件式はどのようにしたらよいのでしょうか? よろしくお願いします。

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

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

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

     DSUMなどのデータベース関数の条件(クライテリア)の指定において,複数の条件を指定できるのでしょうか?  例えば,布について,フィールドに色(黒,白,赤,黄,緑),値段,大きさ(大,中,小)があるデータベースの中から,色が黒と白,大きさが大のものの値段の和を求める場合,セルに   A B 1 色 大きさ 2 黒 大 3 白  というような,クライテリアの指定ができるのでしょうか?このとおり指定しても,上手く計算されてこないのですが?Aで色を黒と白と複数指定できないのでしょうか?

  • EXCEL 関数 条件に当てはまる行数を求める

    1行の中の、複数の列の値に条件をつけ、それに当てはまる行数を関数で求めたいのですが、どうやれば良いのでしょうか? 行数を求めるのはおそらくROWS?だと思うんですが、その行の中の複数の列の条件をどのように指定すれば良いのか分からずに困っております。 (例) 列Cに文字列"青"、列Fに数値"5"が両方満たす行がいくつあるかを、どこかのセルに関数で求める。 よろしくおねがいいたします。

  • データベース関数のCriteria(クライテリア)について

    いつもお世話になってます。 データベース関数のCriteria(クライテリア)で条件を数式で指定する場合なんですが。。 (1)なぜ検索範囲の先頭レコードでないとダメなのか? (2)数式がand・or関数しか使えないのか? ちょっと疑問に思ったので・・ 詳しい方お願いします!

  • エクセル2007のcountifs,sumifsについて

    以前は複数条件を設定する場合にはsumproductを使っていましたが 使い慣れたcountif,sumifに複数の条件が設定できると知り、 計算式を作ってみましたがうまくいきません。 期間内の数値の入力されているセルの個数を求めたくて 次のような式にしてみました。 D1は2009/10/1 D2は2009/11/1 p6:p331は金額 B6:B331は日付 =COUNTIFS(P6:P331,">=1",B6:B331,"and(>=D1,<=D2") 実際には30程該当するセルがあるのに0と表示されます。日付の 部分がおかしいのだとは思いますがどのように入力したらいいのでしょうか。 それと、金額の入力してあるセルを指定するのに >=1としていますが これも他に数値を表す関数とかありますでしょうか。 同じようにSUMIFSも0になってしまいます。

  • エクセルの関数について教えてください。

    どの関数を使ったらよいのか教えてください。 1.例えば、1000以上2000以下の数値が入っているセルの個数をカウントしたい。この場合、COUNTIFで式を入れようとしても条件がひとつしか入らないので(">1000"のように)、他のどの関数を使えばいいのでしょうか。 2.ある文字列の中で同じ文字があった場合、その文字とセルの個数をカウントしたい。例えば、ある範囲にA,D,W,D,R,D,A,A,Wとあった場合、A 3,D 3,W 2,R 1というような結果がほしいのですが。 基本的なことで質問して申し訳ないのですが、急いでやらなければならないことがありますのでよろしくお願いします。

  • Excelの関数

    Excelで、範囲指定した列に文字"○"があり、なおかつ文字"○"があった行の範囲指定した別の列に文字"△"があるセルの個数カウントをしたいのですが、その場合の関数がわかりません。 わかりづらい質問で申し訳ございませんが教えてください。 よろしくお願いいたします。

  • ロータス関数について(簡単編)

    ロータス123を使っています ある表から2つの条件を満たすセルの個数を出したくて DCOUNTを使いました。 1つの条件だと書式にあてはめるだけなので出来るのですが 2つの条件の時は#AND#?を入れると良いのでしょうか? ()も二重につけるのでしょうか? いろいろ自分なりにやってみたのですがエラーが出て 困っています。どうかよろしくお願いします。

  • 1-2-3関数からエクセル関数への変換

    Lotus1-2-3からエクセルへの変換を考えています。 c:Documents and SettingsOwnerMy Documentsにあるreport.123ファイルのA112セルにある数値(例えば1549)と入力すると、参照ファイ ルIDEA.123の2列目からC1548セルにデータを取り込むようにしています。C1548セルには@IF(@CELL("TYPE",A112..A112)="B"," ",@VLOOKUP(A112,+<<c:lotuswork123SPACEIDEA.123>>$A:$A$4..$A:$C$2800,2))という関数を書いています。 123ファイルをxlsファイルに変換したとして、上記123関数をxls関数に書き換えて頂ければ助かります。

専門家に質問してみよう