エクセルのデータベース関数について質問します。

データベースの指定された列を検索し、条件を満たすレコードの中で数値が入力されているセルの個数を数えたいと思います。が、その列が複数あり、また、条件も複数ある場合、DCOUNT関数を使うと、データベース関数に指定した条件が設定されているセル範囲をいくつも設定しなくてはならないのでしょうか?

以前、Lotusを使っていた時は、#and#という形で、条件をいくつも指定することが出来たのですが、そういったことは出来るのでしょうか?

わかりにくい表現かもしれませんが、よろしくお願いします。

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

A 回答 (5件)

やりたいことは



>例えば 列が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としてそれを集計しています。
    • good
    • 0
この回答へのお礼

ありがとうございます。

=SUM(IF(A1:A5=1,IF(C1:C5=3,1,0),0))

の数式で出来ました。
やはり、LotusとExcelは同じように見えて、違うものなんですねぇ。
ただ、配列数式の概念がいまいちつかみ切れていないので勉強したいと思います。

ありがとうございました。

お礼日時:2001/06/08 16:38

追加です。


>以前、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も中々やりますね。
    • good
    • 0

私も何度か、これに挑戦してきましたが、


あきらめたので、どうしても条件が多岐に渡るデータベースを扱う際や、
マクロを使いたい場合は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では、逆にこういうときは条件を書き直さないといけないのですよね。
(私の場合は、検索と置換を使って対処しています)
セルは確かに節約できるけど、データベースが大きくなると、
ものすごく式が重くなるんですよね。
どっちもどっちなのかなあ。

書いているうちに自信がなくなりました(笑)
    • good
    • 0

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

    • good
    • 0
この回答へのお礼

ありがとうございます。

やってみたのですが値が0になってしまいます。
ちなみに
COUNTIF(範囲,AND(条件1,条件2))  の範囲というのは1つの範囲しか出来ないのですよね?

例えば 列がA,B,C,Dとあり、おのおのに、1から5までの数が入っていたとします。そこで、列Aで1かつ列Cで3が入力されているセルの数を数え、他の表に集計させたいと思っています。

なにか別の機能を使ったりするのでしょうか?
出来たら、関数でやりたいと思います。

お礼日時:2001/06/07 15:36

EXCELでは、次のような書式になるはずです。



AND(条件1,条件2)

COUNTIFという関数も準備されているので、HELPか何かで確認して見られてはいかがでしょうか。用途によっては使い勝手がよい関数です。
    • good
    • 0
この回答へのお礼

ありがとうございます。
たしかに、1つの条件だと、COUTIFは使い勝手がよいですよね。

そこで、条件がいくつもあるので、

AND(COUNTIF(条件),COUTIF(条件))

でやってみたのですが、値がTRUEとなってしまいます。
やり方が違うのでしょうか?

お礼日時:2001/06/07 14:06

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

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

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

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

Qエクセルの関数です。一列目で指定した値の間で、二列目で指定した値を示す、一列目の最初の値を求める。

エクセルの関数です。
一列目で指定した値の間で、二列目で指定した値を示す、一列目の最初の値を求める関数を教えてください。
添付した図で、具体的に説明します。
A列に値(時間)、B列に値があります。
この配列の中から、
F4の値(時間)と同じ値(時間)を示すA列の行から、F5の値(時間)と同じ値(時間)を示すA列の行までの中で、
F3の値と同じ値がB列にある、A列の値(時間)の内、
A列で上から最初の値(時間)
です。

min、offset、index、match を組み合わせてみるのですが、うまくいきません。
どうぞよろしくお願いします。

Aベストアンサー

こんにちは!

画像の配置でF6セルに「7」という結果が返れば良い訳ですかね?

少し長くなりますが、
=INDEX(INDIRECT("A"&MATCH(F4,A:A,0)&":A"&MATCH(F5,A:A,0)),MATCH(F3,INDIRECT("B"&MATCH(F4,A:A,0)&":B"&MATCH(F5,A:A,0)),0))
という数式を入れてみてください。

※ F3セルは質問に載っていないので余計なお世話かもしれませんが
同じようなやり方で
=MAX(INDIRECT("B"&MATCH(F1,A:A,0)&":B"&MATCH(F2,A:A,0)))
という数式になると思います。

※ エラー処理はしていません。m(_ _)m

QA列の特定条件のセルのときC列の数値を集計する関数

以下のA列に1から3の値が入っている時、
例えば1の時のC列の数値を集計できる関数はありますか?

A列1の時調べるとC列は1が1個、2が1個、3が1個です。
A列2ではC列は1が1個です。
A列3ではC列は1が1個です。

_|A|B|C
1|1| |3
2|2| |1
3|1| |2
4|3| |1
5|1| |1

よろしくお願いします。

Aベストアンサー

こんにちは!
私もNo.1さんのように単純にSUMIF関数でOKかと思いましたが・・・

A・C列は数値というより、「男」「女」等の区別なのですね?

そうであれば、SUMPRODUCT関数で対応できると思います。
↓の画像では A列=1で C列=1の場合の個数のみの計算式を入れています。
=SUMPRODUCT((A2:A6=1)*(C2:C6=1))
他の求めたいセルはアレンジしていただければ、希望通りになると思います。

尚、余計なお世話かも知れませんが・・・
男、女などの条件が数字だと勘違いの原因になるかもしれませんので、
A列をそのまま「男」「女」
C列を「はい」「いいえ」「どちらでもない」
=SUMPRODUCT((A2:A6="男"(C2:C6="はい"))
としても同じ結果が得られるはずです。
以上、参考になれば幸いです。m(__)m

QExcel : DCOUNT関数の条件表の指定方法について

DCOUNT関数の複数条件を表す表の指定方法について教えてください。

以下のような表があります。

[A列:担当者] [B列:予定日] [C列:実績日]
A子 2001/06/01 2001/06/15
A子 2001/06/01 2001/06/01
B子 2001/07/01 2001/07/01

ここから「担当者がA子で、実績日が予定日より大きい(予定より遅れている)」という条件にあてはまる行数をカウントするのが目的です。

条件表に含める条件は、

条件1:[担当者]がA子である。
条件2:[実績日]>[予定日]である。

となると思いますが、条件2の指定方法がわかりません。
良い方法を教えてください。お願いします。

Aベストアンサー

配列数式を使います。
=SUM(IF(A2:A4="A子",IF(B2:B4<C2:C4,1,0),0))
と入力して、Ctrl+Shift+Enter とします。
条件がこれ以上増えても大丈夫ですよ。

Q【EXCEL】条件付き書式、A列、C列、D列、E列が同じ値の時にB列の背景色を変えたい

お世話になります。

エクセルの条件付き書式の数式の使い方について教えて下さい。
A列、C列、D列、E列の値が同じ時にB列のセルの背景を青に
塗りつぶしたいと思っています。

なので、「数式を使用して、書式設定するセルを決定」、
「次の数式を満たす場合に値を書式設定」で、数式を
「=A1=C1=D1=E1」と入力し、書式、塗りつぶし、青、
を選択して、条件付き書式を設定しました。
すると、、、画像のような結果になります。

私の感覚だと画像でセルの値が「11」~「15」の時だけ
B列が青になると思うのですが実際の結果は画像の通りです。

先の話の通りA列、C列、D列、E列の値が同じ時だけ
B列のセルの背景を青にしたい場合はどうい数式になるのでしょうか?

すいませんが、詳しい方、数式(関数?)で説明できる方よろしくお願い致します。

追記
可能でしたらA列、C列、D列、E列が空白の時はB列の背景色をなしにしたいと思っております。
→A列、C列、D列、E列に値があって、かつ同じ値の場合のみB列の背景を青にしたいです。

お世話になります。

エクセルの条件付き書式の数式の使い方について教えて下さい。
A列、C列、D列、E列の値が同じ時にB列のセルの背景を青に
塗りつぶしたいと思っています。

なので、「数式を使用して、書式設定するセルを決定」、
「次の数式を満たす場合に値を書式設定」で、数式を
「=A1=C1=D1=E1」と入力し、書式、塗りつぶし、青、
を選択して、条件付き書式を設定しました。
すると、、、画像のような結果になります。

私の感覚だと画像でセルの値が「11」~「15」の時だけ
B列が青にな...続きを読む

Aベストアンサー

AND関数を使えば判定ができるのでは?
 =AND(A2<>"",A2=C2,C2=D2,D2=E2)

A列には常に判定する数値が入っているなら「A2<>""」は不要です。

参考サイト
http://www.relief.jp/itnote/archives/003940.php

QExcel関数  A列の値とC列の値の間であればD列の値が抽出される関数

いつもお世話になっております。
F1にある数値を入れ、その数値が一覧表の中の範囲にマッチすればその数値を集計表シートのセルG1に反映したいのです。
例えば
A B C D E F G
1    1 ~ 1000  70 1200 ?
2  1001 ~ 1500  85
3  1501 ~ 2000  92
というような表があるとします。
F1に「1200」と入力するとG1には「85」と出るようにするにはG1にどのような関数を入れたらいいでしょうか。
必要があれば左の数値と~、右の数値は便宜上3列に分けて入力しています。
宜しくお願い致します。

Aベストアンサー

VLOOKUP関数でできます。

求める数値がD列にあるとします。
F1の値を $A$1:$D$3の範囲の左端の列から検索して、D列(検索範囲の4列目)の値を求めます。
セルG1に
=VLOOKUP(F1,$A$1:$D$3,4,TRUE)

一覧表を分かりやすくするために3列に分けているのだと思いますが、
値を求めるだけなら、B列、C列の「~1000」などは不要です。
B列、C列を削除して、「70,85,92・・・」をB列にしておけば
=VLOOKUP(F1,$A$1:$B$3,2,TRUE)
で求められます。

VLOOKUP関数をヘルプで参照していただくとわかると思いますが、
>TRUE を指定するか省略すると、検索値 が見つからない場合に、検索値 未満で最も大きい値が使用されます。
検索値が1200の場合、1200はA列にありませんが、1200未満でもっとも大きい値「1001」に対応する「85」が得られます。


このカテゴリの人気Q&Aランキング

おすすめ情報