プロが教える店舗&オフィスのセキュリティ対策術

エクセルの関数の使い方についてアドバイスをお願いいたします

あるシート(仮にSheetAとする)において
B列にあるデータの任意の文字(仮にCとする。文字位置は固定ではない)であって、且つ
D列にあるデータの任意の文字(仮にEとする。文字位置は固定ではない)の双方を満たすセルの数を数えて、さらにその結果は同じファイルの中にある別のシート(仮にSheetFとする)に表したいと思います

これについては関数SUMPRODUCTと関数FINDを使って導きたいと考えておりました。
=SUMPRODUCT(ISNUMBER(FIND("C",B1:B100))*ISNUMBER(FIND("E",D1:D100)))
として同じシート上に結果を表すことはできたのですが、別シートに表すところで、
つまづいてしまいました(おそらく初歩的なミスと思うのですが・・・。)

別のシート名を表す部分をどこに入力したらいいのかアドバイスいただきたく
お願いいたします

それとも別の関数(DCOUNTなど)を使用したほうがよりベストなのか迷っています
DCOUNTの使い方も精通しておらず苦慮しております

調べてみましたが前例を見つけだす事ができませんでした
簡単なことでしたらすみません

エクセル2003です

どうぞアドバイスのほど
よろしくお願いいたします

A 回答 (5件)

シート名は、


=SUMPRODUCT(ISNUMBER(FIND("C",Sheet1!B1:B100))*ISNUMBER(FIND("E",Sheet1!D1:D100)))
のように入力すればOKです。

 ---

データベース関数を使うのであれば、DCOUNTAを使います。

データベース関数を使う場合、
データが入っている列の1番上のセル(この例なら、B1とD1)に、
データの種類の名前(例えば「住所」「氏名」等)が入力されている必要があります。

次に、検索条件を書きます。
ここでは、E1~F2に
住所 氏名
C E
と埋めます。

最後に結果を出したいセルに
=DCOUNTA(B1:D100,"住所",E1:F2)
と入れればOKです。
別シートの表から検索する場合は、SUMPRODUCTの例同様、シート名!を加えてください。

データベース関数については、例えばこのページが参考になります。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu …

 ---

どちらの方法を使うかですが、
大量のデータを検索する場合、
配列形式の関数(SUMPRODUCT等)は動きが極めて遅くなりますので、
検索に特化したデータベース関数を使うのはとても有益です。

ただ、
・条件を書くためのセルを作らなければいけない
・データの一番上にデータの名前を埋めなければいけない
・知らない人がメンテナンスしづらい
などデメリットもあります。

そんなに大きくない表であれば、使い慣れたSUMPRODUCT関数を使うのも良いかと思います。
    • good
    • 0
この回答へのお礼

早々にありがとうございます
シート名はそこに入力すればよかったのですね

やはりDCOUNTAだと、データーの種類の名前を入れないとだめなんですね
その方法は、できればとりたくないと考えておりました

早速やってみます

大変ありがとうございました

お礼日時:2010/11/26 06:38

2列のそれぞれの条件での探索は、エクセルでは(他のデータベース言語ではその備えがあるが)難しい。


だから2列を結合して、1列のデータに持っていって(そのため作業列は要るがやむをえない)、考える。
ーー
Sheet2で第2行目から(Sheet2は特別意味なし)
C列  D列      E列(何処でも空き列)でよい)
asdfxyzuasdf......xyzu......
dfgsxufdfg.......sxuf......
sxyufs.........xyuf......
dfghudedfg.......hude......
ersdgggsxyzderersdggg...sxyzder...
tsdftt.........sdft......
sadres.........adre......
dfgdfgdfg.......dfg.......
xsdfghwexyzxsdfgh....wexyz.....
E2の式は =C2&REPT(".",10-LEN(C2))&D2&REPT(".",10-LEN(D2))
後尾に埋める文字をコンマにしているのは、桁数が良くわかるようにしている。スペースだとわかりにくいが、スペースのほうが本来良い。
C,D列とも最大10桁以内と仮定した場合の式。両列で最大桁が違っていても式の定数が変わるだけ。
仮に定桁式結合と呼ぼう。
これで
C列はSdを含み、かつD列はxyzを含む行の数を求める
空きセルに =COUNTIF(E2:E10,"*sd*xyz*")
で上記例では3
ワイルドカードが使える。
これで良いと思うが、色んなケースを十分考えていないので、質問者がチェックしてください。
ーー
別シートに式を入れるなら
=COUNTIF(Sheet2!E2:E10,"*sd*xyz*")
この部分は常識的なことです。
    • good
    • 0

参考までに



部分一致でDCOUNTA関数を利用する場合は、No1の回答に示されている条件や皆さんから紹介されているリンクの情報では、正しい個数を返さない可能性があります。

DCOUNTAなどのデータベース関数はバージョンによる違いがあり、Criteriaに入力する条件によって、前方一致で検索した入り完全一致で検索する可能性があります。

http://www.kenzo30.com/ex_kisotyu/ex_ks_tyukyuxb …

例えば「C」を含むという条件なら、ワイルドカードを使って「'=*C*」(アポストロフィーの後に=、アスタリスク、文字列、アスタリスク)と入力する必要があります。

ちなみに後方一致(最後がCで終わるセルの個数)なら「'=*C」と入力することになります。
    • good
    • 0

=SUMPRODUCT(ISNUMBER(FIND("C",シート名!B1:B100))*ISNUMBER(FIND("E",シート名!D1:D100)))


のようにセル範囲の前にシート名を設定するだけです。

DCOUNT関数の使い方は下記を参照
http://excel.onushi.com/function/dcount.htm
    • good
    • 0
この回答へのお礼

早々にありがとうございます

ご丁寧にありがとうございます
みなさんすぐにアドバイスいただき、嬉しいかぎりです

早速作成してみます

お礼日時:2010/11/26 06:44

=SUMPRODUCT(ISNUMBER(FIND("C",SheetA!B1:B100)*FIND("C",SheetA!D1:

D100))+0)
    • good
    • 0
この回答へのお礼

早々にありがとうございます
夜中にもかかわらずありがとうございます
実施してみます

お礼日時:2010/11/26 06:40

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