• ベストアンサー

重複するデータの個数と合計

こんにちは、2度目の質問です。 またブチ当たってしまいました。    A  |  B 1 A01 |  100 2 B01 |  100 3 A01 |   20 4 C01 |   20 5 A01 |   30 6 A01 |  100 7 A01 |   50 8 C01 |   60 9 B01 |   80 上記のような表があります。 このとき、セル"A1"~"A9"までの、 「A01」の個数は何個か、 「B01」の個数は何個か、 「C01」の個数は何個か、 また、セル"B1"~"B9"までの、 「A01」のB行における数値の合計はいくつか、 「B01」のB行における数値の合計はいくつか、 「C01」のB行における数値の合計はいくつか、 と言うマクロを考えなくてはなりません。 この例のように、たかだか3個とか10個ぐらいなら"COUNTIF"関数を使えばなんて事無いのですが、 この「A01」のような物が1000以上(例えて言うとA0001~A1000と言った感じ)あり、 それが全てランダムで出てきますので、関数で行うのは無理のような気がします。 また、この様な情報が記入されたシートが膨大な量あり、このシート全てに同じ処理を 行わなくてはならず、オートフィルタは使いたくありません。 出来れば、ボタン一発で計算したいのです。 条件に合った重複データの抽出、という質問は良く見かけますが、この様に条件付けが難しい場合は、 どのようにマクロを組めば良いでしょうか、何卒アドバイスをお願いいたします。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

個数の合計ならCOUNTIF、単一条件の合計ならSUMIF といったワークシート関数でやったほうが簡単ですよ VBAでやるとなると 配列にデータを取得してそれをカウント、または合計といったことになると思います Dim ar() Dim colN, colS, obj dim n as integer, j as Integer Set colN = CreateObject("Scripting.Dictionary") Set colS = CreateObject("Scripting.Dictionary") ar = Sheet1.Range("A1").CurrentRegion.Value ' colNに個数をカウント ' colSにデータの合計 for n = 1 to Ubound(ar)   if colN.Exists(ar(n,1)) then     j = colN(ar(n,1))     colN.Remove ar(n,1)     colN.add ar(n,1), j + 1   else     colN.add ar(n,1), 1   end if   if colS.Exists(ar(n,1)) then     j = colS(ar(n,1))     colS.Remove ar(n,1)     colS.add ar(n,1), j + ar(n,2)   else     colS.add ar(n,1), ar(n,2)   end if next for each obj in colN.keys   debug.print obj, colN( obj ), cols( obj ) next といった具合でしょう

buffie
質問者

お礼

回答ありがとうございました。 かなり難解なプログラムですが、この方法でやってみます。

buffie
質問者

補足

回答有難う御座います。 VBA初心者の私には、相当難解です・・ VBAの辞典で一個一個プログラムの意味を解析してみます・・・。 ええーーっと。すいませんが。 例えば、"A1~A9"には、「A01」「B01」「C01」がある。 と言う抽出をするような方法は有りませんでしょうか、この抽出が出来れば、後はそれを条件としてカウントしたりする関数は思いつくのですが。 質問にあるように、この「A01」「B01」にあたる物が1000以上あり、全てランダムに出てきてしまうのです。 "A1~A9"には、A01が9個かもしれないし、A01が1個でB01が1個でC01が7個の場合もある。 A01が2個で、D01が1個で、G01が1個で、H01が1個で後は空白の場合もあるのです。 A1~A9にあるランダムな値を、抽出するような方法ってあるでしょうか。 何度も申し訳ありません、何卒ご教授お願いします。

その他の回答 (1)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

> 「A01」のB行における数値の合計はいくつか、 > 「B01」のB行における数値の合計はいくつか、 >「C01」のB行における数値の合計はいくつか、 「ピボットテーブル」を使えば一発でしょう。 一から説明するのは大変なので、ヘルプでピボットテーブルについて調べてみてください。 http://www.moug.net/skillup/adpc/an022-3.htm

buffie
質問者

お礼

回答有難う御座います。 ピボットテーブルと言うのは知っていましたが、実際に使ってみたことはありませんでした。 と言うか、どんな時に使えばいいのか解らなかったのですが・・ この方法もチャレンジしてみます。 ありがとうございました。

関連するQ&A

  • エクセルでの列と列の比較、重複データ個数抽出

    すいません。どなたか教えてください。 今、エクセル2003を使用しているのですが、ある条件でデータの個数が抽出出来ません。 お知恵をお貸しください。   A列 B列 1 あ   あ 2 い   う 3 う    い 4 え    5 お   か A列とB列を比べると、「あ、い、う」の3つのデータが重複しています。 そこで、一つのセルで3個とい値を返したいです。 条件として、 ・計算用のシートや別セルを使わずに、例えば、C1などの1つのセルの中で関数を使用して個数を出したいです。 ・できたらマクロも使用しないでやりたいです。 ・数字ではなく、文字列の比較で、空白行もあります。 やはり、列同士の比較は一つのセルの中でやることは不可能なのでしょうか? どなたかよろしくお願いいたします。

  • 開始時間から終了時間の合計個数の求め方

    別のシートに開始時間と終了時間の合計個数をだしたいのですが、 やり方がわかりません ・シート1 開始時間 終了時間 個数 宛先 商品 10:00    10:01    1   A   11111 10:00    10:05    8   A   22222 10:00    10:07    4   A   33333 10:15    10:17    6   B   11111 10:15    10:30    9   B   22222 11:00    11:01    1   C   11111 11:00    11:08    9   C   22222 ・シート2 開始時間 終了時間 合計個数 宛先 10:00    10:07    13     A 10:15    10:30    15     B 11:00    11:08    10     C とシート2に個数の合計を求めたいのですが、100行以上のデータがあるので、 関数を使えばできますか? よろしくお願いします。

  • Excel 複数の検索値の合計を出したいのですが 

    Excel2010でどのように関数を使えばよいかわからずに困っています。 どなたかご教示ください。   sheet2 sheet3         a1 111    a1    a2 222    a2    b1 333    b1    b2 444    b2    a2 555        z3 666        c1 777        a2 888   このようなbookがあります。   検索値はsheet2の列の4つ(実際には20程)で、この4つをsheet3の列(実際には40程)か  ら全て抽出しての列右の数値の合計を出したいのですがどうしてもできません。   今回の例の場合 (a1/111)(a2/222)(b1/333)(b2/444)(a2/555)(a2/888) の合計2,453を   任意のセルに返したいのです。   sheet2のようなsheetがたくさんあるので関数を使ってコピーして算出したいのですが   vlookup・sumif・sumifs・countif・dsum等々調べましたが私にはどうしてもできません。   ピボットテーブルやマクロまで詳しくないので関数で何とか算出できないかとご相談です。   お詳しい方どうぞよろしくお願いいたします。                 

  • 複数の条件を満たすセルの個数

    同時に複数の条件を満たすセル(行)の個数を知りたいです。  ABC 1●●○ 2○○○ 3●○● 4○○● 5●○○ たとえばB列が「○」でC列が「○」の 両方の条件を満たしている件数を調べるのは どういう関数を使えばよいのでしょうか。 「COUNTIF」とオートフィルタをあわせたような 感じなのですが、COUNTIFは複数の条件をいれられないのでしょうか。 どなたか教えてください。

  • エクセルにて別々のセルにあるデータを、一つのセルに出して、その個数を合

    エクセルにて別々のセルにあるデータを、一つのセルに出して、その個数を合計にして出す、という風に行いたいのですが・・ Aセルに品物名、Bセルに品物の規格、Cセルに品物の個数 と入力して、 2~100まではα部署、101~200までがβ部署、201~300までがγ部署 と入力したとします。 ここから、各部署に入力したデータをまとめたいのですが、 AとBが一致した場合、Cに入力してある個数をまとめる、という具合にしたいのです。 例: α部署の所に、Aセルに「鉛筆」 Bセルに「10cm」 Cセルに「10個」 β部署の所に、Aセルに「鉛筆」 Bセルに「10cm」 Cセルに「8個」 とあった場合、一つにまとめて、鉛筆10cmは18個と出す。 上記のようにやるのにうまいやり方はないでしょうか? 数が膨大なためマクロか関数とかでまとめられたら教えていただきたいです。 宜しくお願いいたします。

  • 数量×単価+数量×単価... 合計を出すどういう関数式になりますか?

    A  B  C  D  E  F  G  H  I 1 A4 A3     A2     A1 2 個数 単価 個数 単価 個数 単価 個数 単価 合計 3  5  8.9  1 17.8        6  10.5 ☆ 単価にはIF関数を使いその列ごとに個数が入力されると単価も自動的に表示されるように設定しています 1行目のA1とB2は結合されています。また他のセルも同様に結合されています A2に個数、B1に単価、C1に個数、D1に単価と交互に数値が入っています。 個数×単価の全ての合計を合計のセル☆に求めたいです。 またE列、F列には個数がないということで、ここには数値をいれたくなく、また「0」を入力しない状態でエラーが出ないようにしたいですその場合どんな関数式になりますか?本当はもっとセルに単価と数量が続いています。自分で考えるととても長い関数になってしまいます。 スマートな関数式と効率のいい関数式を探しています。どなたかよろしくお願いします。

  • Excel 個数の集計時の重複削除について教えてください。

    COUNTIFを使用し個数を集計したのですが、 同じ値がでてきた時に重複してしまいました。 よい関数を教えてください。 A列  B列(カウント) 111  2 222  1 111 =COUNTIFだとこれも2となってしまうので、行を非表示(または削除)したデータを他シートに表示したい。 333  1 よろしくお願いします。

  • どんどん増えるデータの重複しないデータの個数

       A列    B列 1 2    3      6 3  4    a     a-1 5    a      a-2 6    b      b-1 7    b      b-2 8    b      b-3 9    c      c-1 たとえば上記のような表を作りたいと思っています。、 10行目以降もデータは増えていきます。 作業列を作らずにA2セルにA4以降のA列の重複しないデータの個数を 表示させる方法を教えてください。

  • 行を飛ばして検索条件にあう個数を数えたい

    次の表のように 1、2、4、5行 のみの ○ の個数を数えようと COUNTIF関数を使ってみますが上手くいきません。教えて下さい。        A   B   C   1    ○   ○  ×   2    ×   ○  ○   3    ○   ×  ○   4    ○   ○  ×   5    ×   ○  ○   6    ○   ×  ×    

  • 入力した合計数値を振り分けたい

    関数とかマクロなど理解していない初心者でエクセル2003を使用しいます。 例えば 1Aのセルに1~10個(単価50円)と入力済 2Aのセルに11~20個(単価40円)と入力済 3Aのセルに21~30個(単価30円)と入力済 1B~3Bのセルに個数欄未入力 1C~3Cのセルに金額自動計算式入力済 4Bのセルに合計個数欄未入力 4Cのセルに合計金額自動計算式入力済 とした場合、例えば4Bの合計個数に29個と入力すると、自動的に1Bに10個、2Bに10個、3Bに9個と個数が振り分けられる様にしたいのですが、できるのでしょうか?

専門家に質問してみよう