• 締切済み

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

タイトルにあるとおり、あるデータをオートフィルで抽出した状態で、その抽出結果からデータをカウントしたいのです。 以下のような表があったとします。    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関数でいけるのですが、抽出した状態からだと私のスキルでは解決できません。 どなたか、ご存知の方ご教示よろしくお願いします^^;

みんなの回答

noname#204879
noname#204879
回答No.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)

mazdaFD3
質問者

補足

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

回答No.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
mazdaFD3
質問者

補足

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

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

SUBTOTAL関数がその目的に合致します。SUBTOTAL関数はフィルタをかけた状態で「表示されているセル」だけを対象に集計することができます =SUBTOTAL(3,A1:A9) これは表示されているデータに対してCOUNTA(A1:A9)と等価の動きをします。 従って質問の例では  フィルタをかけていないときは「4」  フィルタをかけたときは「3」 を返します 詳しくはSUBTOTAL関数のHELPを見てください。

mazdaFD3
質問者

補足

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

関連するQ&A

  • 2つの表を合わせた表3作成したい

    表1 A B  C  D  E  F G  H  I  名称 1 01 00 00 00 00 000 00 00 00  あ 2 01 01 00 00 00 000 00 00 00  い 3 01 01 01 00 00 000 00 00 00  う 4 01 01 01 01 00 000 00 00 00  え 5 01 01 01 01 01 000 00 00 00  お 6 01 01 01 01 01 001 00 00 00  か 7 01 01 01 01 01 001 01 00 00  き 8 01 01 01 01 01 001 01 01 00  く 9 01 01 01 01 01 001 01 01 01  け 10 01 01 01 01 01 001 01 01 02  こ 20 01 01 01 01 01 001 01 02 00  阿 21 01 01 01 01 01 001 01 02 01  居 22 01 01 01 01 01 001 01 02 02  卯 100 02 00 00 00 00 000 00 00 00  亜 101 02 01 00 00 00 000 00 00 00  医 102 02 01 01 00 00 000 00 00 00  宇 AからIの欄には入る数字によって名称が変わります。 表2 A  B  C  D  E  F G  H  I   1 01 01 01 01 01 001 01 01 01  2 01 01 01 01 01 001 01 01 02  3 01 01 01 01 01 001 01 01 03  4 01 01 01 01 01 001 01 02 01  5 01 01 01 01 01 001 01 02 02  6 02 01 01 01 01 001 01 01 01  この2つの表を合わせた表3を作成したいのです。 表3 A  B  C  D  E  F  G  H  I 1 01あ 01い 01う 01え 01お 001か 01き 01く 01け 2 01あ 01い 01う 01え 01お 001か 01き 01く 02こ  3 01あ 01い 01う 01え 01お 001か 01き 01阿 01居  4 01あ 01い 01う 01え 01お 001か 01き 01阿 02卯

  • EXCLのフィルター実行後のデータカウント方法

    EXCEL2007で作成した表で下記のようにD列(H-O)を +20でオートフィルターで抽出した後、F列 の+と-と0の値を持つデータをそれぞれ +値=2件 -値=2件 0値=1件 というようにカウントしたいのですがSUBTOTAL関数では そのような集計方法がなく困っています。 何かいい方法はありませんでしょうか?  A列  B列  C列  D列  E列  F列 ------------------------------------- 1 日付  O  H  H-O  C  C-O -------------------------------------   2 06/01 100 120  +20 130 +30 3 08/08 115 135  +20 115 0 4 08/13 140 160  +20 130 -10 5 09/22 132 152  +20 120 -12   6 10/06 105 125  +20 130 +25

  • 巨大なCSVの加工(指定列のみの抽出)について

    巨大なCSVの加工(指定列のみの抽出)について 下記のような構成のCSVファイルがあります。 "ID","a","b","c","d","e","f","g","h","i","j","k","l","m" "0001","a","b","c","d","e","f","g","h","i","j","k","l","m" "0003","a","b","c","d","e","f","g","h","i","j","k","l","m" "0004","a","b","c","d","e","f","g","h","i","j","k","l","m" ・ ・ ・ 例えば、 ここから"ID"列と"c"列と"f"列のみ抽出して新たなCSVファイルで保存。 という処理を行いたいのですが、行数が5000万行近くあり、ファイルサイズが80GB程あるので エクセルはおろかアクセスでも開くことができません。 テキストエディタの秀丸64bit版なら開くことができますが、指定列の抽出方法が分かりません。 秀丸のマクロでもVBSでも良く、また膨大な待ち時間がかかっても構わないので実現する方法について お知恵をお貸しください。

  • EXCEL エクセルのフィルター実行後のデータカウント方法

    EXCEL2007で作成した表で下記のようにD列(H-O)を +20でオートフィルターで抽出した後、F列 の+と-と0の値を持つデータをそれぞれ +値=2件 -値=2件 0値=1件 というようにカウントしたいのですがSUBTOTAL関数では そのような集計方法がなく困っています。 何かいい方法はありませんでしょうか?  A列  B列  C列  D列  E列  F列 ------------------------------------- 1 日付  O  H  H-O  C  C-O -------------------------------------   2 06/01 100 120  +20 130 +30 3 08/08 115 135  +20 115  0 4 08/13 140 160  +20 130 -10 5 09/22 132 152  +20 120 -12   6 10/06 105 125  +20 130 +25

  • 連続していない日付データからの抽出

    エクセルで、   A   B 1 日付 売上   2 11/21  900 3 11/22 2000 4 11/26 1800 5 11/27 1300   D    E 1 日付  前日比 2 11/21 **% 3 11/22 **% 4 11/26 **% 5 11/27 **% とあります。 そこで、   G   H   I 1 日付 売上 前日比 2 任意 (抽出) (抽出) 3 と、Gに日付を入力したらH、Iにデータが抽出されるように関数を作りたいと思います。 Hには =INDEX(A2:B5,MATCH(G1,A2:A5,0),2) Iには =INDEX(D2:E5,MATCH(G1,D2:D5,0),2) と入力して抽出をしましたが、 例えばG列に元データには無い、「11/23」が入力されたときは、11/23よりも先で1番にくる11/26のデータを抽出するようにしたいのですが、どうしたらいいでしょうか? よろしくお願いします。

  • リストのデータを重複なしでランダムに抽出する

    シート1に下記のように14種類の名前リストがあります     A 1   A 2   B 3   C 4   D 5   E 6   F 7   G 8   H 9   I 10  J  11  K 12  L 13  M 14  N 上記の名前を下記のように別シートの数列おきの列(行は同一)に重複なしに行毎にランダムに抽出する事が関数で出来るでしょうか?(エクセルは2010です) ちなみに下記は一列おきのセルに抽出した例です   A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA 1 D   L   K    I    A   M   N    B   H   J    C    F    E   G 2 K   J   M   H    I   G   F    E   D    A    B   N   C    L 3 E   J   A    L   B   M    K   C   N    G    F   D    H   I どなたか教えていただける方がおりましたらよろしくお願いします。

  • 重複するデータのある表で条件に合ったデータ抽出

    以前にも似たような質問もさせていただきました、(その時はわかったような感じだったのですが)いろいろほかの質問も参照しましたが今ひとつわからないので再度質問します。よろしくお願いいたします。    A     B     C     D   (E)   (F)     G     H       1 No.   出荷日 返却日  送り先     返却日    No.  在庫状況  2 100     1/1   1/20    1    10          100    ×  3 200     1/5   1/15    2    11          200     ×  4 300     1/10         3     12          300     ×  5 100     2/3   2/18    4      13          400    ○  6 100     2/20         5       14          500    ○  7 200     2/5          6      15          600    ○  8 400     1/15   1/31   7       16  9 500     2/8    2/20   8      17 表1A1~D9にデータ表があります。商品の貸出表です。 A2~D2はNo.100の商品を1/1に貸出、1/20に返却され貸出先は1と言う内容です。 当然データの重複があります。 この貸出表をもとに表2G1~H9の在庫元帳に在庫の有無(○×)を表示したいのですが。 送り先に関しては全く無視してかまいません。 考え方としては、たとえばA2~A9の中からNo.100でC列が””(空白)のものを探しだし×(貸出中) とそういうデータがなければ○(在庫有り)と表記したい。 試しに(E)列に単なる数字を付け(Aに数字がはいいていれば) =INDEX(E2:E9,SUMPRODUCT(A2:A9=G2)*(C2:C9=0)*ROW(2:9))を入れたのですが、何かいまひとつうまくいきません。 Cの空白を0にし(F)に0を入れるとNo.100は表記されますがそれ以降は出ませんでした。 =DGET(A1:E9,E1,F1:G2) 前回途中で分からなくなったので細かく説明しました。長くなりましたがよろしくお願いいたします。(EXEL2003)

  • リストのデータを重複なしでランダムに抽出する

    シート1に下記のように14種類の名前リストがあります     A 1   A 2   B 3   C 4   D 5   E 6   F 7   G 8   H 9   I 10  J  11  K 12  L 13  M 14  N 上記の名前を下記のように別シートの数列おきの列(行は同一)に重複なしに行毎にランダムに抽出する事が関数で出来るでしょうか?(エクセルは2010です) ちなみに下記は一列おきのセルに抽出した例です   A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA 1 D   L   K    I    A   M   N    B   H   J    C    F    E   G 2 K   J   M   H    I   G   F    E   D    A    B   N   C    L 3 E   J   A    L   B   M    K   C   N    G    F   D    H   I どなたか教えていただける方がおりましたらよろしくお願いします。 という質問をさせていただき、mike gさんに下記のような回答をいただきました 1.Sheet1 の例えばセル C1 に式 =RAND() を入力して、此れを右に2列(注1参照)ドラッグ&ペースト 2.範囲 C1:E1 を下方にズズーッと(14行目まで)ドラッグ&ペースト 以下は別シート(Sheet2)における操作です。 3.セル A1 に次式を入力して、此れを右方にズズーッと(セル AA1 まで)ドラッグ&ペースト(注2参照)   =IF(MOD(COLUMN(),2)=1,INDEX(Sheet1!$A$1:$A$14,MATCH(SMALL(OFFSET(Sheet1!$C$1,,ROW()-1,14,),CEILING(COLUMN()/2,1)),OFFSET(Sheet1!$C$1,,ROW()-1,14,),0)),"") 4.1行目全体を下方にズズーッと(3行目まで)ドラッグ&ペースト 注1:「右に2列」は別シートの行数が3行の場合で、4行(5行)の場合は「右に3列(4列)」に読み替える。 注2:式中の 2 は「一列おき」の場合で、二列(三列)おきの場合は 2 を 3(4) に書き替える。 これで完璧に出来たのですが 実際にはSheet2のセルH6から15列おきに抽出したいのです。 15列おきは出来たのですが、セルH6から抽出を始めるにはどの部分を変更すれば良いのでしょうか? どなたか教えて頂ける方がおりましたらよろしくお願いします。

  • 重複するデータの抽出について(エクセル)

    エクセル2003にて重複するデータの取り出しをしたいのですが、 わからないので教えてください。 例えば   A列   B列   C列    D列    E列・・・ 1  色  1回目  2回目  3回目   4回目 2  赤   あ    a      A       0 3  白   い    b      B       1 4  黄   う    c      C       2 5  黄   え    d      D       3 6  黒   お    e      E       4 7  赤   か    f      F       5 : このデータの中から、別のシートのA1に 赤と入力したら、B1にD列のA・Fを抽出 黄と入力したら、B1にD列のC・Dを抽出をしたいです。 VLOOKUP関数を使用してみたのですが、 赤と入力すると、D列のA(1番上のデータ)のみしか抽出出来ず、Fが抽出されません。 重複するデータがあるのはA列のみで、D列には重複するデータはありません。 わかりにくい文章ですみませんが、よろしくお願いします。

  • 表から条件で抽出して別の表を作る

    いつもお世話になっています。またわからなくなってしまいまして、わかる方がいましたらよろしくお願いいたします。 下記のような表で、例えばB列が『A商店』のデータを抽出して、別の表としてE列以降に新しい表を作るようなことは可能でしょうか? =====  A    B   C D E    F   G りんご A商店 2個  りんご A商店 2個 バナナ A商店 3個  バナナ A商店 3個 りんご B商店 5個  バナナ A商店 5個 みかん C商店 3個  みかん A商店 1個 バナナ A商店 5個 みかん A商店 1個 バナナ C商店 3個 ===== よろしくお願いいたします。

専門家に質問してみよう