• ベストアンサー

Excelの関数で質問です。

Excelの関数についてご質問です。 (環境:Windows XP オフィス2003です。) カテゴリ1 | カテゴリ2 | 数値1 アメリカ | ニューヨーク | b 日本 | 東京 | d 中国 | 北京 | d 日本 | 京都 | a アメリカ | ワシントン | b イギリス | ロンドン | a アメリカ | ニューヨーク | c 中国 | 上海 | c 日本 | 東京 | b 日本 | 東京 | c Excelでこのようなリストが何千行もあるときに、 1つのセルに関数を指定して、「日本」の「東京」の「a」の数をカウントしたい場合はどのように指定したら良いでしょうか? 私自身では下記のような関数を組みましたが、 =IF(AND(Sheet1!$A:$A="日本",Sheet1!$B:$B="東京"),COUNTIF(Sheet1!$C:$C,"a"),NA()) これではCOUNTIF単体で指定した値と同じ値が返ってきてしましました。 知識が乏しく、申し訳ありませんが、ご教授頂ければ幸いです。 ※マクロを走らせることも考慮しましたが、出来るだけ関数で取得したい状況にあります。解決が不可能な場合はマクロ使用を検討いたします。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

ご提示の例では、「日本」の「東京」の「a」の数はゼロですが・・・。 一応、以下のような数式で求められます。 =SUMPRODUCT((A2:A12="日本")*(B2:B12="東京")*(C2:C12="a"))

beogeo
質問者

お礼

すみません。存在してない「a」を指定してしましました。 >>=SUMPRODUCT((A2:A12="日本")*(B2:B12="東京")*(C2:C12="a")) こちらありがとうございます。即解決しました! 範囲の指定でA2:A12このように指定すれば出せるのですね。 実は列で指定していてエラーが出ていました。 「A:A」この指定ではだめなものもあるのですね。 もしお手数でなければこちらの理由もご教授いただけないでしょうか? お手数でしたら、参考サイトのリンクだけでもいただければと思います。 本当にありがとうございました。

その他の回答 (2)

  • turuzou
  • ベストアンサー率33% (15/45)
回答No.3

補助列を使用してみては如何でしょうか? 空いている列(D列)に =カテゴリ1&カテゴリ2&数値1 仮にD1へ =A1&B1&C1 を、オートフィルで下へ =COUNTIF(D:D,"日本"&"東京"&"a")

beogeo
質問者

お礼

ご回答ありがとうございます。 こちらの方法では確実簡単で、分かりやすいですね。 参考にさせていただきます。 文字列をつなげて完全一致のカウント方法。 貴重なご意見ありがとうございました。 エクセルっていろいろと奥が深いですね。f(^-^;)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

はい、SUMPRODUCT関数は残念ながらA:Aのような列指定は出来ません。 理由はわかりません。( ̄~ ̄;)う~ん =SUMPRODUCT((A2:A65536="日本")*(B2:B65536="東京")*(C2:C65536="a")) のようにすれば実質的に項目行を除く列全部を対象にできます。 でも、A1:A65536の指定はできません。

beogeo
質問者

お礼

>>はい、SUMPRODUCT関数は残念ながらA:Aのような列指定は出来ません。 >>理由はわかりません。( ̄~ ̄;)う~ん すみません。御忙しいところ、ありがとうございます。 大変勉強になります。お手数お掛けしました。 行数が不確定の場合には下記のご回答を参考にさせていただきます! =SUMPRODUCT((A2:A65536="日本")*(B2:B65536="東京")*(C2:C65536="a")) ありがとうございました。

関連するQ&A

  • Excelの関数またはマクロを教えて下さい。

    Exsel2000の関数で、現在以下の関数まで出来たのですが、これを応用して検索値「A1」を2つのセル「A1&B1」にしたいのですが、どうすればよいのでしょうか?どなたか方法を教えて下さい。 =VLOOKUP(A1,Sheet1!$A$1:$E$2000,4) 上記の関数から判るように、これは 例えばSheet2のC1のセルにこの式を入れる場合、A1と同じ内容の値を、Sheet1のA列から検索して、そして同じ行のSheet1のD列の値をSheet2のC1のセルに返すという関数です。 これを応用して、「A1と同じ内容…のA1を、A1&B1の2つが一致するセルを検索して、同じ列のSheet1のD列の値をSheet2のC1のセルに返すという関数にしたいのです。 どなたかおわかりになる方がおりました宜しくお願いいたします。 また、マクロを使う方法でも良いのですが、当方マクロは詳しくないので出来るだけ判りやすくお願いいたします。

  • Excel 該当しない行を削りたい (関数)

    以下票の場合、Fを除いて一覧にしたいんですが、 どの様な関数にしたらいいでしょうか? 国語 A+ 数学 A 理科 F 社会 B ↓ 国語 A+ 数学 A 社会 B 以下関数までは探し当てたんですが、これだとA1に指定した科目のみになってしまいます。 =IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(B1),INDEX(Sheet1!B:B,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(B1)+1)),"")

  • エクセル関数の質問

    こんにちは。エクセルについて教えてください。 まずは伝わりやすいように下記を見てもらえますか?(と思いましたが、逆にうまく伝わるか書いたあとに不安になりました) ↓シート1 ___A______________B____C   1_[アイウエ]_[T]_[ ] 2_[カキクケ]_[T]_[ ] 3_[サシスセ]_[Z]_[ ] ↓シート2 ___A_______B 1_[アイ]_[(1)] 2_[カキ]_[(2)] 3_[シス]_[(3)] 上段と左側のアルファベットと数字はセル番地です。 [__]がひとつのセルです。 シート1のC列は、空白です。 やりたいことはというと 1.シート1のA列にシート2の文字が含まれている場合にシート1のC列にシート2のB列の(1)~(3)を入れる。(Vlookup関数でできるかな?と思ったら、完全に同じものじゃないとうまく機能しないようなので・・・) 2.「1」の作業のあとに、シート1でB列が「T」&C列が「(1)」のものをカウント。(Countif関数かな?と漠然と思いつつ、二つの条件の入れ方が分からずエクセル本を見ていたら、Dsum関数を見つけて「これ?」と思いましたが、それもよく分からず・・・) よろしくお願い致します。

  • Excelの関数を教えてください。

    Excelの関数で例えば シートAのB行の中の値とシートBのセルA1の値、シートAのC行の中の値とシートBのセルB1の値が一致した行のF列の値を返す関数を考えているのですが、いろいろ試してもエラーになってしまいます。(B列とC列の一致する行は1つしかありません) これができないと家に帰れません;; どなたか、教えてください! よろしくお願いします。

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

    シート1    A    B    C 1 コード  品番  店番 2 日本   韓国  中国 シート2    A    B    C 1 品番  店番  コード 2 韓国  中国  ※1  上記の様に設定していた場合、 シート2のC2セル(※1)に日本と表示するにはどの様な 関数を設定すれば宜しいのでしょうか? vlookupでは左側の検索が出来ないので、 方法が御座いましたら、教えて下さい。

  • エクセル関数をもちいてセルを検索するには?

    お世話になります。 早速ですが、以下のようなデータがあるとします。     A    B    C 1   1    100 2   0    200 3   1    10 4   1    20 5   0    30 6   0    300 7   0    10 8   1    30 9   0    5 10  0    10 A列には0か1が、B列にはランダムな数字が並んでいるとします。 これに対し、C列にはA列の0の数を数えて、仮に5個目のB列の値を返したいです。 C1ならA1から0の数を数えて5個目、つまりB9(300)の値を返したい。 C2ならA2から0の値を数えて5個目、同じくB9(300)の値、 C3ならC3から0の値を数えて5個目、つまりB10(10)の値を返したい。 最終的には5個めではなく、任意の数字にしたいのですが、 このような値を返すにはどのような関数をもちいたらよろしいでしょうか? COUNTIFやINDEXでできるのではと思いましたが、 カウント数が指定数を満足させる条件がわからず行き詰りました。 どうかご指導お願いいたします。

  • EXCELの関数式内に他のセルの値を取り込む方法?

    EXCEL2002、OSはWIN XPです。よろしくお願いします。 セルのA1にランダムな数字が入ります(実際はマクロでシートの最下行が書き込まれるようになっています。) セルのB1に以下のような式で「xx」の部分にA1の値を入れたいのですが、どのようにすればよいのでしょうか? =countif(C1:Cxx,"") つまりセルB1にはC1からその時使用されている最下行までの空欄セル数を常に表示したいのです。マクロでやれば簡単だと思いますが、できれば関数で表示させたいと思っています。よろしくお願いします。

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

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

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

    エクセルのCOUNTIF関数について、というかCOUNTIF関数でよいのかどうかもよく分からないのですが、教えて下さい。 (1)まず、ワークシートのA列の1~100行目までの100マスを範囲として、数値を入力していくときに、仮に同じ数値を入力しようとしても、入力ができないようにしたいのです。 (2)次に、ワークシートのA列とC列のそれぞれ1~100行目までの合計200マスを範囲として、(1)と同じことをしたいのです。(つまりB列はとばして) (1)と(2)のようなことは可能でしょうか? お分かりの方がおられましたら、ぜひよろしくお願いします!

  • EXCEL 関数の質問です。

    A1セルに1もしくは2があり、 1のときB1セルにある値をD1に引いてきます。 2のときC1セルにある値をD1に引いてきます。 D1にセットする関数を知りたいです。 IF関数ですと、1とその他になってしまいうまくいきません。 もしA1が1であるならばB1を、もしA1が2であるならばC1をセットする関数を教えてください。

専門家に質問してみよう