- 締切済み
抽出した表でデータをカウントしたいのですが・・・
タイトルにあるとおり、あるデータをオートフィルで抽出した状態で、その抽出結果からデータをカウントしたいのです。 以下のような表があったとします。 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関数でいけるのですが、抽出した状態からだと私のスキルでは解決できません。 どなたか、ご存知の方ご教示よろしくお願いします^^;
- みんなの回答 (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)
- esupuresso
- ベストアンサー率44% (257/579)
6.7行目は非表示の状態と言うことで宜しいでしょうか? 取り合えず非表示の行をカウントしない「SUBTOTAL」関数を使ってみます セル【A10】に 「=SUBTOTAL(103,A5:A9)」を入れます 次にセル【A10】に入れたSUBTOTAL関数をセル【I10】までフィル機能を使い関数のコピーをして出来上がりです 尚、関数内の「103」は「COUNTA」を意味しますが他にも色々ありますので参考にしてみて下さい 行の再表示をされた場合は答えの数値も自動的に変わります
補足
esupuresso 様 ご回答ありがとうございます^^ 今回の例では6,7行目を非表示の状態です。 ご提示いただきました、「=SUBTOTAL(103,A5:A9)」 の場合ですと、A5~A9限定でのカウントになりそうですが 今回の例では、6、7行目以外をオートフィルによって、抽出しているわけなのですが、ケースによって抽出する内容が変わってきます。 例えば、9行目だけがフィルタによって削除された場合 6、7,8行目のみをカウントしたいわけです。 実際の表では9行目以降は毎回増えていきます。 SUBTOTAL関数+最下段から任意の行数分カウント と、いう感じでの関数を考えています^^; わかりにくい説明で申し訳ないのですが、改めてよろしくお願いします
- zap35
- ベストアンサー率44% (1383/3079)
SUBTOTAL関数がその目的に合致します。SUBTOTAL関数はフィルタをかけた状態で「表示されているセル」だけを対象に集計することができます =SUBTOTAL(3,A1:A9) これは表示されているデータに対してCOUNTA(A1:A9)と等価の動きをします。 従って質問の例では フィルタをかけていないときは「4」 フィルタをかけたときは「3」 を返します 詳しくはSUBTOTAL関数のHELPを見てください。
補足
zap35 様 ご回答ありがとうございます^^ SUBTOTAL関数は確かに便利ではあるのですが 今回の場合ですと、最下段より3行のみをカウントする場合に使用できますでしょうか? 今回の例では、6、7行目以外をオートフィルによって、抽出しているわけなのですが、ケースによって抽出する内容が変わってきます。 例えば、9行目だけがフィルタによって削除された場合 6、7,8行目のみをカウントしたいわけです。 実際の表では9行目以降は毎回増えていきます。 SUBTOTAL関数+最下段から任意の行数分カウント と、いう感じでの関数を考えています^^; わかりにくい説明で申し訳ないのですが、改めてよろしくお願いします
補足
mike_g 様 ご回答ありがとうございます^^ 今回ご提示いただきました A11: =SUBTOTAL(3,A2:A10)ですが 最下段より3行のみをカウントする場合に使用できますでしょうか? 今回の例では、6、7行目以外をオートフィルによって、抽出しているわけなのですが、ケースによって抽出する内容が変わってきます。 例えば、9行目だけがフィルタによって削除された場合 6、7,8行目のみをカウントしたいわけです。 実際の表では9行目以降は毎回増えていきます。 SUBTOTAL関数+最下段から任意の行数分カウント と、いう感じでの関数を考えています^^; わかりにくい説明で申し訳ないのですが、改めてよろしくお願いします