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

データベースの指定された列を検索し、条件を満たすレコードの中で数値が入力されているセルの個数を数えたいと思います。が、その列が複数あり、また、条件も複数ある場合、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(Excel)エクセルのバージョンごとの使用可能関数リストがあるサイト

(Excel)エクセルのバージョンごとの使用可能関数リストがあるサイト

Excel2007でIFERROR関数などを使っていました
しかし、以前のExcelバージョンだと使えないようです。
そこで、どの関数がどのExcelバージョンから使用可能か?
というリストのようなものを掲載しているサイトはありますか?

Aベストアンサー

下記ページで2007で追加された関数が解ります。

Excel(エクセル)基本講座:Excel(エクセル)関数一覧表
http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu/itiran.html

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

QExcel関数のようなものはありますか?

こんにちは。まだプログラミングをほとんどしたことがないのでわからないことがあります。

現在Excelを使っていますがExcel関数は非常に使いやすいく重宝しています。
Excel関数は300種類ほどあるそうですが、C++やVB、C#、JAVAなどのプログラムにもExcel関数のようなものが
あらかじめ用意されているのでしょうか?
もしExcel関数の中で使いたいものがあり、そういう関数がソフト側で用意されてない場合は自作するしかないのでしょうか?

Aベストアンサー

office2003以降かつ.Netで作成という話しなら、事実上「ある」に等しいかもしれませんね。

.Netの場合、ライブラリとして読み込む側の言語についてあまり意識する必要はありません。(JAVAで本体のプログラムという訳にはいかないが)
とはいえ、プログラム経験が浅いのでしたら、VB.NETでやるというのが吉であると思います。(関数のみならず、マクロも利用できますのでね/office2003以降)

# 開発環境を安くならC#となります(Borland C#Builderなら無料)

参考URL:https://mypage.borland.co.jp/mypage/index.html?ret_to_semi_list=1&page_act=LI_REG

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関数について

Excel関数についての質問です。


Excel関数で、実際の仕事上でよく使う関数、ベスト5を教えてください。

また、覚えやすいコツなどがありましたら、教えて頂きたいです。

よろしくお願いします。

Aベストアンサー

うーん…仕事でどういったものを使いたいかによりますが…基本として、

SUM (サム)
指定範囲の合計を出します。
合計はサム!みたいにして覚えました。

--------------------------
IF
if文は結構使いました。
if(A1="","○","×")  ⇒ もし、A1が空なら,○を入力、違うなら×を入力
if(A1="","○",IF(A1="?","△","×")) ⇒ もし、A1が空だったら、○を入力、
                         それ以外で、?が入っていたら△を入力、それ以外は×を入力

とか、色々使えます^^
他の関数とも組み合わせて、とても便利です。

-------------------------
COUNTIF(カウントイフ)
条件にあったものの個数を数えます。

COUNTIF(A1:A5,"正解") 正解と書かれている個数を数えます

--------------------
TODAY
今日の日付が表示されます。
---------------------


他にも、平均を出すものや
便利なものはたくさんあります。
その都度、やりたいことを検索して
使っていくのがベストかな?と思います。
Excelの、挿入⇒関数のところで、
検索もできたはずです。


参考リンク
http://pc.nikkeibp.co.jp/pc21/tech/excel36/
http://matome.naver.jp/odai/2135607317537215601
http://www.enjoy-web-jp.com/jp/excel/excel00.html


また、セルの書式設定のユーザー定義はとても便利です。
書き方を勉強しておくと役立つかもしれません。

以上、参考まで

うーん…仕事でどういったものを使いたいかによりますが…基本として、

SUM (サム)
指定範囲の合計を出します。
合計はサム!みたいにして覚えました。

--------------------------
IF
if文は結構使いました。
if(A1="","○","×")  ⇒ もし、A1が空なら,○を入力、違うなら×を入力
if(A1="","○",IF(A1="?","△","×")) ⇒ もし、A1が空だったら、○を入力、
                         それ以外で、?が入っていたら△を入力、それ以外は×を入力

とか、色々使えます^^
他の関数とも組...続きを読む

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 とします。
条件がこれ以上増えても大丈夫ですよ。

QEXCEL ゴールシークの関数?

EXCEL ゴールシークの関数?
ゴールシークを画面操作をしなくて ゴールシーク機能を持つ 関数はありませんか?
無ければ 複合関数は? VBを使わないでEXCEL関数だけで 求める方法を探しています。

Aベストアンサー

こんにちは。

例えば、財務関数のNPVなどがありますが、ゴールシークの代わりに、関数だけで、オプションの循環参照計算があります。そうでなければ、基本的な話ですが、微分を使うか、もしくは、ミスが出やすいのですが、オートフィルで、目的の値を探すか、いずれかの方法があると思います。

ただ、VBというか、マクロのことだと思いますが、そういう区分けはあまり意味のないことだと思います。それは、アドインもピボットも、コマンドの3分の1程度は、動的なプログラムを使っているからです。また、分析ツールは完全にExcelの古いマクロです。

私は、マクロを中心とする回答者のひとりです。何かを使わないという条件付き質問は、学校のテストやクイズやお遊びとしてはありえるとしても、ゴールシークというものは、論理的な計算ではなく、反復する時系列な計算です。それは、基本的にマクロにほかなりません。ただし、私たちが考えるよりも、遥かに速い処理です。それを論理的な計算をするというなら、その求める具体的な質問がなければ、話は進みません。解答を求めたいなら、方法論は何でもアリではないかと思います。そうでないなら、純粋に数式で計算させるMathematica のようなもののほうが良いと思います。

こんにちは。

例えば、財務関数のNPVなどがありますが、ゴールシークの代わりに、関数だけで、オプションの循環参照計算があります。そうでなければ、基本的な話ですが、微分を使うか、もしくは、ミスが出やすいのですが、オートフィルで、目的の値を探すか、いずれかの方法があると思います。

ただ、VBというか、マクロのことだと思いますが、そういう区分けはあまり意味のないことだと思います。それは、アドインもピボットも、コマンドの3分の1程度は、動的なプログラムを使っているからです。また、分...続きを読む

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のピボット関数

excelのピボット関数はどんな関数ですか?

Aベストアンサー

私自身は「ピボット関数」なる言葉を聞いたことがないけど、貴方はそれを何処で知ったのですか?
ひょっとして、[データベース関数]の中の =GETPIVOTDATA()関数のことでしょうか?
Excel のヘルプ文をお読みになったら如何でしょ。
>ピボットテーブル レポートに格納されているデータを返します。
>GETPIVOTDATA 関数を使用すると、ピボットテーブル レポートに
>表示されている集計データを取得することができます。
で始まる説明があります。
それを読んでから不明なところを質問されることをお奨めします。
何?隅から隅まで、チンプンカンプン?

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ランキング