こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

抽出した表でデータをカウントしたいのですが・・・

タイトルにあるとおり、あるデータをオートフィルで抽出した状態で、その抽出結果からデータをカウントしたいのです。

以下のような表があったとします。

   A  B  C  D  E   F  G  H  I
1  ○           ○  ○  ○
2     ○  ○     ○        ○
3        ○  ○  ○  ○
4  ○  ○     ○     ○
5     ○            ○  ○    ○
6     ○  ○     ○        ○
7  ○        ○        ○     ○
8     ○  ○     ○        ○
9  ○        ○  ○     ○


この表では、仮に各行○が4つとして、ランダムに各列に○が振り分けられています。
A列・4個、B列・5個、C列・4個、D列・4個、E列・6個、F列・4個、G列・4個、H列・3個、I列・2個
という状態です。

   A  B  C  D  E   F  G  H  I
1  ○           ○  ○  ○
2     ○  ○     ○        ○
3        ○  ○  ○  ○
4  ○  ○     ○     ○
5     ○            ○  ○    ○
8     ○  ○     ○        ○
9  ○        ○  ○     ○


ある条件でオートフィルによって、抽出した結果が上の表です。
今回の例では6,7行が消えた状態だったとします。
それぞれ、A列・3個、B列・4個、C列・3個、D列・3個、E列・5個、F列・4個、G列・3個、H列・2個、I列・1個
と、いう結果になりました。

このような状態になった表で最下段、この場合9から上に向かって3行分の○をカウントするような方法、または便利な関数はありますでしょうか?
今回の例ですと、最下段から、3行分、5、8、9のそれぞれの列の○をカウントするという感じです。
A列・1個、B列・2個、C列・1個、D列・1個、E列・2個、F列・1個、G列・2個、H列・1個、I列・1個
これが今回の例における求めたい結果です。
抽出してない状態でしたら、OFFSET関数でいけるのですが、抽出した状態からだと私のスキルでは解決できません。
どなたか、ご存知の方ご教示よろしくお願いします^^;

投稿日時 - 2008-05-30 00:12:42

QNo.4061041

暇なときに回答ください

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

   A  B  C  D  E  F  G  H  I  J
1  ZZ1 ZZ2 ZZ3 ZZ4 ZZ5 ZZ6 ZZ7 ZZ8 ZZ9 REF
2  ○         ○  ○  ○       X
3    ○  ○    ○       ○    X
4       ○  ○  ○  ○         X
5  ○  ○    ○    ○         X
6    ○         ○  ○    ○
7    ○  ○    ○       ○
8  ○       ○       ○    ○  X
9    ○  ○    ○       ○    X
10 ○       ○  ○    ○       X
11  4  5  4  4  6  4  4  3  2

A11: =SUBTOTAL(3,A2:A10)

投稿日時 - 2008-05-30 01:26:06

補足

mike_g 様 ご回答ありがとうございます^^

今回ご提示いただきました A11: =SUBTOTAL(3,A2:A10)ですが 
最下段より3行のみをカウントする場合に使用できますでしょうか?

今回の例では、6、7行目以外をオートフィルによって、抽出しているわけなのですが、ケースによって抽出する内容が変わってきます。
例えば、9行目だけがフィルタによって削除された場合
6、7,8行目のみをカウントしたいわけです。
実際の表では9行目以降は毎回増えていきます。
SUBTOTAL関数+最下段から任意の行数分カウント
と、いう感じでの関数を考えています^^;
わかりにくい説明で申し訳ないのですが、改めてよろしくお願いします

投稿日時 - 2008-05-30 21:37:36

ANo.2

6.7行目は非表示の状態と言うことで宜しいでしょうか?

取り合えず非表示の行をカウントしない「SUBTOTAL」関数を使ってみます

セル【A10】に 「=SUBTOTAL(103,A5:A9)」を入れます
次にセル【A10】に入れたSUBTOTAL関数をセル【I10】までフィル機能を使い関数のコピーをして出来上がりです

尚、関数内の「103」は「COUNTA」を意味しますが他にも色々ありますので参考にしてみて下さい

行の再表示をされた場合は答えの数値も自動的に変わります

参考URL:http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu/sum.htm#subtotal

投稿日時 - 2008-05-30 01:10:12

補足

esupuresso 様 ご回答ありがとうございます^^

今回の例では6,7行目を非表示の状態です。
ご提示いただきました、「=SUBTOTAL(103,A5:A9)」
の場合ですと、A5~A9限定でのカウントになりそうですが
今回の例では、6、7行目以外をオートフィルによって、抽出しているわけなのですが、ケースによって抽出する内容が変わってきます。
例えば、9行目だけがフィルタによって削除された場合
6、7,8行目のみをカウントしたいわけです。
実際の表では9行目以降は毎回増えていきます。
SUBTOTAL関数+最下段から任意の行数分カウント
と、いう感じでの関数を考えています^^;
わかりにくい説明で申し訳ないのですが、改めてよろしくお願いします

投稿日時 - 2008-05-30 21:12:11

ANo.1

SUBTOTAL関数がその目的に合致します。SUBTOTAL関数はフィルタをかけた状態で「表示されているセル」だけを対象に集計することができます

=SUBTOTAL(3,A1:A9)
これは表示されているデータに対してCOUNTA(A1:A9)と等価の動きをします。

従って質問の例では
 フィルタをかけていないときは「4」
 フィルタをかけたときは「3」
を返します

詳しくはSUBTOTAL関数のHELPを見てください。

投稿日時 - 2008-05-30 01:02:20

補足

zap35 様 ご回答ありがとうございます^^

SUBTOTAL関数は確かに便利ではあるのですが
今回の場合ですと、最下段より3行のみをカウントする場合に使用できますでしょうか?

今回の例では、6、7行目以外をオートフィルによって、抽出しているわけなのですが、ケースによって抽出する内容が変わってきます。
例えば、9行目だけがフィルタによって削除された場合
6、7,8行目のみをカウントしたいわけです。
実際の表では9行目以降は毎回増えていきます。
SUBTOTAL関数+最下段から任意の行数分カウント
と、いう感じでの関数を考えています^^;
わかりにくい説明で申し訳ないのですが、改めてよろしくお願いします

投稿日時 - 2008-05-30 21:10:22

あなたにオススメの質問