• ベストアンサー

集計

お世話になります。 表の集計にCountifで、1の数をカウント又は2だったり3だったり変数をカウントしたのですが、困っているのは、オートフィルタをかけている表でCountif関数を使用しても非表示の数字もカウントしてしまう事です。表示されている部分だけを数えたいのですがどうやったらいいのでしょうか?お教え下さい。

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

  • ベストアンサー
noname#70958
noname#70958
回答No.3

単に「表示されているセルを数える」のではなくて 「表示されているセルについて特定の数字を数える」のかと思ったのですが…。 もし私の解釈が正しければ、 例えば、データが2行目以下にあり、C列の値が5である行をカウントする場合。 ---------------------------------------------- ●甲案: オーソドックスに作業列を使って。  1.すべての行を表示した状態で、適当な列(仮にD列とします)の2行目を    =SUBTOTAL(3,C2)   として下方にフィルしておきます。  2.そのうえで、任意のセルを   =SUMPRODUCT((C2:C99=5)*D2:D99)   とすれば、オートフィルタをかけた際に、   「表示されている行で、かつ、C列が5である行」の数が得られます。 ---------------------------------------------- ●乙案: ややトリッキーですが数式一発で。  任意のセルを   =SUMPRODUCT(SUBTOTAL(3,OFFSET(C2,ROW(C2:C99)-2,))*(C2:C99=5))  とすれば、直接結果を得ることができます。  ※OFFSET(C2,ROW(C2:C99)-2,) の C2 の部分は範囲の先頭行を指定し、   ROW(C2:C99)-2 の -2 の部分は先頭行の行番号を指定します。 ---------------------------------------------- ●丙案:ユーザー定義関数を使って。  [Visual Basic]カテゴリでのご質問なので、やっつけですが一応。 Function Sample(ByVal myRng As Range, ByVal myKey As Variant) As Long  myRst = 0  For Each myCel In myRng   If Application.Subtotal(3, myCel) = 1 And myCel.Value = myKey Then    myRst = myRst + 1   End If  Next myCel  Sample = myRst End Function 任意のセルを  =Sample(C2:C99,5) とすれば、結果が得られます。 ---------------------------------------------- いずれもExcel2003で動作確認済。以上ご参考まで。

miruchoko
質問者

お礼

ありがとうございました。 大変参考になりました。

その他の回答 (2)

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.2

もしかして、VBAですか? なら、 Kensu = WorksheetFunction.Subtotal(3, Range("A2:A50")) とか Kensu = WorksheetFunction.Subtotal(3, Range("A1").CurrentRegion.Columns(1)) - 1 など。。。  

miruchoko
質問者

お礼

ありがとうございました。 参考になりました。

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.1

そういうときは、SUBTOTAL関数を使います。 例えば、全て表示されてる時点で、データが、A2~A50に入力されていたら   =SUBTOTAL(3,A2:A50) としておくと、フィルターが掛かると表示されてる件数が計算されます。 それから、わざわざ数えなくてもフィルターがかかった時点で 画面下部のステータスバーの左に、抽出数が表示されるはずです。  

関連するQ&A

  • EXCELオートフィルター後の集計方法

     EXCELの表でオートフィルターで抽出後、SUM関数で集計しようとすると抽出外のCELLまで集計してしまいます。  結局SUMIF使って集計しているのですが、表示部分だけ集計させる方法があったら教えてください。

  • EXCELでオートフィルター後の集計方法

    EXCELでオートフィルター後の集計方法 EXCELの表でオートフィルターで抽出後、数値であればSUBTOTAL関数を使用し集計するが、 「○」や「×」のように文字例を集計したいです。どのような関数を使用すればできますか? どなたか教えてください。 ちなみに「EXCEL2000」を使用してます。

  • [エクセル]クロス集計っていうんでしょうか?わからないのです。

    お世話になっております。 エクセルで躓いてしまいました。 年代 年収 23  300 34  450 45  520 33  540 22  350 40  480 この様な表があった場合で      20代 30代 40代 300万円   2   0   0    400万円   0   1   1    500万円   0   1   0    こういったクロス集計(というのかどうかわかりませんが) の集計表を作成をしたいのですが、 countif関数をクロスで集計するようなものはないのでしょうか? もしくは上記のようなものを完成させたい場合 どのような関数がすぐれているのでしょうか? どうぞよろしくお願いいたします。

  • エクセル 集計について教えてください!

    エクセルで、特定の列に該当する条件に当てはまる数を数えたい時、 どの関数を使えばいいでしょうか。 エクセル得意な方、教えてください。 たとえば、 A列=果物名(もも、りんご、みかん、ぶどう…etc) B列=仕入れた店名(全国各地の店名) C列=仕入れた個数 D列=入荷した日にち を、日ごとに年度でまとめたエクセル表あるとします。 別シートに、 果物ごとに、月別でいくつ仕入れたか、集計したい時にはどの関数を使えばいいでしょうか。 A2、A3、…~果物名 B2行、C2行、…~各月 として、仕入れた数を合計する、という表にしたいです。 (どの店で、という条件は不要です) SUMIFSを使えばいいのかなと思ったのですが、 月別の条件になると、別の関数もいるのかとか、 ただ数を数えるなら、COUNTIFでいいのかとか、色々考えていたら、 どう組み合わせればいいかわからなくなりました…。 オートフィルタやマクロではなく、関数で作りたいのです。 教えてください。 どうぞよろしくお願いします。 ちなみに、エクセルは2010を使っています。

  • エクセルのクロス集計について

    現在、仕事でアンケートのクロス集計をしております。 入力データはオートフィルターをかけおり、単純集計の際は、 質問の回答別に「Count If」の関数を使って、集計しました。 例えば、質問1に「A」と答え、質問2では「B」と答えた人という、 条件でフィルタを書けることはできるのですが、その数字を、 数える方法はあるのでしょうか。 オートフィルタをかけると、「Count If」が使えなくて・・・・。 現在、手作業で数えており、苦戦しております。

  • 関数で可視セルのデータ個数カウント

    Excel2002を使用しています。 オートフィルタで抽出したデータの個数を関数で カウントしたいのですが、可視セルのみをカウント 出来る関数はあるのでしょうか? 例えば   A 1 件数 2  2 3  1 4  3 5  1 6 関数 A6セルに何らかの関数を入れておき、 A列のオートフィルタを使って、1を抽出した時は A6に”2” 3を抽出した時はA6に”1”を表示させたいの です。 このように、可視セルのデータ個数のみを カウントする関数はありますでしょうか? フィルタを使わずにCOUNTIF関数でカウントする 方法、また、可視セルをコピー貼り付け後 カウントする方法は避け、あくまでフィルタで 抽出したデータの個数を瞬時にカウントしたいの です。 ご教授宜しくお願いします。

  • エクセルの表で集計するには

    エクセルの表の中で  名前  20代 30代 40代 50代 60代 ○○○○       1 ○○○○           2 と、いうように、男が1、女が2と入力してあるのですが、 年代別で、1が何人、2が何人と数を集計するには、 どういう方法を使えばよいですか? オートフィルタで抽出した表(抽出×10回)を、コピーして集計する方法しかないでしょうか? 数だけを簡単に集計する方法があれば教えてください。

  • エクセル countif 検索条件に複数セル

    いつもお世話になります。 アンケートの集計をしています。 C列に1から20までのランダムな数字が500くらい入っている表があります。 その中で1か3か8か9...の不規則な12の数字が入っているセルの数を 数えたいのです。 countifの検索条件にORをつけたらどうかと考えてみましたが うまくいきませんでした。 個々にカウントして合計する方法の他に、良い方法はないでしょうか?

  • オートフィルターと 関数を使って数値を出したい

    エクセルのデータで オートフィルターを用いた上で、 countifを用いて数値を抽出したいのですが、 オートフィルターにて条件を絞ってcountifを使っても、 実際には表示されていない分もカウントされてしまいます。 オートフィルターを使った上で、 表示されている分だけをcountif検索はできないのでしょうか?

  • エクセルの区切り数字を個別に集計する方法を教えてください。

    エクセルでアンケート集計しているのですが、 カンマ区切りの数字から特定の数字の個数を カウントする方法をご存じでしたら教えてください。 現在、複数回答の項目を下記の様に入力。 A4のセル 1,2,3,5,10,15,21 A5のセル 1,2,12,22 例えばA6のセルで、「1」と答えた数をカウントしたい。 複数回答の項目が一桁だと、 A6=COUNTIF("A4:A5","*1*") で集計できたのですが、 今回のように二桁になると A6=COUNTIF("A4:A5","*1*")=5 となってしまいました。 よろしくお願いします。

専門家に質問してみよう