• 締切済み

VBAで複数条件に合致した件数を数える

  A    B    C 1 code  質問1 質問2 2 0001   1    3 3 0001   2    3 4 0001   1    2 5 0005   2    1 6 0005   3    2 7 0005   2    3 8 0007   1    2 9 0007   2    3 というようなデータがある中で、 code「0001」と質問2「3」を同時に満たすデータの件数を数えたいのですが、 VBAでコードを作る際にはどのようにすればよろしいでしょうか? ちなみにセルはA2という形ではなくcells(2,1)という形を使うことも条件の一つです。

みんなの回答

  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.3

こんにちは。 「カウントする」は分かりますか? 1)最初に変数を初期化しておき    変数=0 2)条件と一致するときに1を加えます。    変数=変数+1 頑張って下さい。

himejimad
質問者

お礼

いまだ答えは見つからず、闇の中です。。。 集計ができず困ってます。。。

全文を見る
すると、全ての回答が全文表示されます。
  • WWolf
  • ベストアンサー率26% (51/192)
回答No.2

こんにちは 確かに質問内容からして課題(宿題?)の丸投げっぽいので直結のコードは記述せずにおきますが・・・ 参考として range("A2")とcells(2,1)は大儀の上で等しい for ~ next を使う >code「0001」と質問2「3」を同時に満たすデータの件数を数えたいのですが 手法 1.A列を上から順に見て「0001」を探し見つかればC列の値を取得し「3」であればカウントする。 2.条件を文字列(数値)とし繋ぎ、その文字(値)と条件を満たすべき列の値をつなげた文字(値)を比較し一致しているならカウントする。 頑張って下さい。

himejimad
質問者

お礼

課題ではないです。そう見えてしまって、申し訳ないです。 For i = 2096 To 2096 Cells([i] + 3, 9) = Evaluate("SumProduct(Range(Cells(3, 1), Cells([i], 1)) = Cells([i] + 2, 1)) * (Range(Cells(3, 9), Cells([i], 9)) = Cells([i] + 3, 1))") Next i [i]を入れたいからcells縛りにしてます。(iを変えるだけでいいように作りたかったのです。) ちなみに上のコードでは#Value!になってしまいました。

全文を見る
すると、全ての回答が全文表示されます。
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

>ちなみにセルはA2という形ではなくcells(2,1)という形を使うことも条件の一つです。 宿題っすか? 行毎にA列の値が"0001"を満たし、C列の値が"3"を満たした時に カウントしていけば宜しいかと? For NextとIf文でいけそう。

himejimad
質問者

お礼

宿題ではないです。 nextが足りないといわれたりしましたorz

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excel 複数条件に合致するデータの件数を返す関数は??

    複数の条件に合致するデータの件数を出したいのですが、どうしたら良いでしょう?? データは 性別コード|年令コード 1|3 2|1 1|4 1|5 1|1 2|5 といった具合に入力されていて、 性別=1かつ年令=1 の件数はいくつか、というものを出したいのです。 配列数式で {=Count(If(A1:A10=1,B1:B10,""))} 試して見たんですが、一つの条件に合致する件数のみしかカウントできません。(例えば、性別=1の件数) 複数条件のカウントをするにはどうしたら良いでしょうか? ご存知の方がいらっしゃいましたら、教えて下さい。

  • VBA 各条件にあう件数を抽出

    現在VBAで添付画像のフォーマットから条件に合う個数をカウントする、プログラムを作成しようとしています。 内容としては、 申告日のセルから指定された期間の各ステータス合計値を求めたいです。 例. 期間:2012/12/1~2012/12/31 ステータス:A 14 ステータス:B 6 ステータス:C 3 ステータス:D 3 ステータス:E 5 上記のような形で各ステータスの件数を拾いたいのですが、何かいい方法などはあるでしょうか。 現在、オートフィルタの機能を使用し、件数を抽出しようと思いましたが、うまくいきませんでした。 以上、宜しくお願い致します。

  • 【画像あり】複数条件の件数カウントについて

    タイトルの件、質問いたします。 下記の図の、シート2の条件が下記の件数をカウントできる関数を、シート1のB2セルに 作りたいです。 【条件】 A列【受付日】が、4月中で      かつ B列【地域 】が、東京で      かつ C列【分類1】が、A   の件数 ご存知の方、いらっしゃいましたら、宜しくお願いします。

  • VBAの複数条件分岐について

    VBAで下記の構文を使用してシート1にある表より 条件に合致するもののみシート2に抽出するようにしています。 現在はシート1のE2セルの値がシート1のB列の値と比較して 該当するものを抽出しています。 この条件が、 シート1のE1のセルの値が20より小さい場合、 かつE2のセルの値がシート1のB列の値と比較して該当するものを シート1に貼り付け、 シート1のE1のセルの値が20以上の場合、 かつE2のセルの値がシート1のD列の値と比較して該当するものを シート1に貼り付ける というような条件に変えたいのですが どのように変更したらよろしいのでしょうか。 よろしくご教授下さい。 ちなみに現在使用している構文です。 これもきれいな構文かはわからないのですが・・・ Sub test() Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Worksheets("Sheet1") Set sh2 = Worksheets("Sheet2") k = 1 sh2.Cells(k, "B") = sh1.Cells(1, "A") sh2.Cells(k, "C") = sh1.Cells(1, "B") k = k + 1 d = sh1.Range("A65536").End(xlUp).Row For i = 2 To d If sh1.Cells(i, "B") <= sh1.Range("E2") Then sh2.Cells(k, "B") = sh1.Cells(i, "A") sh2.Cells(k, "C") = sh1.Cells(i, "B") k = k + 1 End If Next i sh2.Activate End Sub

  • 2つの条件に合致するVBAの作り方

    VBA 初心者です。 エクセルで 会員ID(A列) 法人名( B列) 部署名(C列) お名前(姓)(D列) お名前(名)(E列) 購入日 (F列) ・ ・ 以下3500行くらい続く という感じのダウンロードデータがあります。 1.姓と名前が一致したら(同じ人)ならカウントしない (新規購入時のみカウントする) 2.年月別で(日もデータにありますが年月別で)購入者数を出したい(法人と個人でそれぞれカウントする) 法人購入はセルに記入あり、個人は空白セルになっています。 というプログラムをつくりたいのですが、2つの条件にあてはまるとこでつまづいています。 とてもVlookupとか試してみたのですがエラーになります。 助けて下さい!! .

  • エクセルVBA 不規則な条件に合致する場合

    エクセル2002 VBA での質問です。 A列に100~9999の数値データが不規則に存在しており、 105 108 113 114 121 531 553 2160 ・・・・・ のような不規則な値と合致するときに B列の処理をしたい場合のコードはどのように記述しますか? 私は for MyRow=1 to (最終行) if (cells(MyRow,1) =105 or cells(MyRow,1) =108 or cells(MyRow,1) =113 ・・・) then B列の処理 end if next MyRow のように If文 のなかで or を用いて全てを記述するかElseif でつなぐ方法しか思いつきません。 抽出対象の値は今後メンテナンスする必要はないのでコード内に記述しても構わないのですが or  や ElseIf を多用するのもどうかと思っています。 ※現実には50個ほどの条件での合致を検出したいです。 みなさんならどのように記述されるでしょうか?

  • 複数条件抽出をVBAで

    excelの複数条件抽出をVBAでやりたいので教えてください。 エクセル2003で複数条件抽出をしたいと思っています。 dateのシートに、A列:日付、B列:名前、C列:金額があります。 それを1というシートに、日付と名前の2つの条件が合致している金額を抜き出したいと思っています。 抜き出すのは0601&AさんをA5セル~A20       0601&BさんのはB5~B20へ ということは可能でしょうか? もしよろしければ教えていただければ助かります。 'date'シート 日付   名前  金額 0601 Aさん  100円 0601  Aさん  120円 0601  Bさん  150円 シート'1' 0601&Aさん   0601&Bさん 100円           150円 120円 どの人がやってもボタン1つで実行できるようにしたいために、 VBA出できればと思っております。

  • VBAで2つの条件に合致するものを、表から抽出する方法を教えてください

       A     B   C    D    E ・・・ 1        0  10%  20%  30% 2  0     0   1   1.2  1.6 3 100以上  2  2.3  2.5  2.6 4 200以上  3  3.1  3.4  3.8 5 300以上  3  3.2  3.5  3.7 6 400以上  4  4.3  4.5  4.8 上記のような表がシート1にあります。 A列は売上、1行には前年比があり それぞれの条件に合致する係数を取得したいのですが シート2のA1セルに「売上」、A2セルに「前年比」を入力することで B1セルに係数が反映するようにはできるでしょうか? 例えば、A1「250」A2「13」と入力すると B1「3.1」と反映させたいのですが… 他の作業もあり、できればVBAで作成したいと思っています。 よろしくお願いいたします。

  • エクセルVBAでセル選択するコードが変

    エクセルのワークシートでVBAでセル選択するコードで理解に苦しむことがあります。 通常、Cells(2, 1)はセル番地で言えばA2セル Cells(4, 1)はセル番地で言えばA4セルです。 しかし、 With .Range("B5:B15")でくくれば  .Cells(2, 1)はセル番地で言えばB6セルだと思います。 .Cells(4, 1) はセル番地で言えばB8セルだと思います。 ところが下記のコードを動かすと、なぜかC10:C12が選択されてしまいます。 この理屈がわかりません。 Sub test02()   With Sheets("Sheet1")     With .Range("B5:B15")       .Range(.Cells(2, 1), .Cells(4, 1)).Select     End With   End With End Sub なお、 .Range(.Cells(2, 1), .Cells(4, 1)).Selectを .Range(“A2:A4”).Selectに書きかえると、希望のB6:B8が選択されます。

  • Excel2000のVBAについて教えてください

    はじめまして。 現在、以下のような表があるとき、コードCがブレイクするごとに、データBに対する絶対値の最大値を求めるVBAを作成しようと思っています。 また、求めた絶対値の最大値を持つデータを抽出して、各コードCに対する最大値のみのデータを別シートに貼り付けたいとも思っています。 同一コードC内に絶対値の最大値が複数存在することもあります。 データ件数は処理ごとに変更がありますので未定です。 なお、Microsoft Queryはインストールされていません。 以上の条件でどのようなコードを作成すれば良いのか教えていただければ幸いです。 例として下記のような表1のデータを、表2のように変更したいと考えています。 よろしくお願いいたします。 表1 コードA コードB コードC データA データB データC 48     01     22   -179.4  2.402  3.864 48     20     22   -248.3  4.102  3.826 49     06     22   0.1031  -2.02  3.986 49     07     22   -153.9  1.773  3.902 50     01     22   -179.4  2.402  3.872 50     07     22   -153.9  1.773  3.886 51     08     21   -6.386  0.069  2.622 51     09     21   -74.24  0.073  2.538 52     09     21   -74.24  0.073  2.522 52     12     21   -85.48  0.084  2.508 53     10     20   0.2928  2.427  5.986 53     11     20   -198.4  -1.14  5.903 54     11     20   -198.4  -1.14  5.886 54     13     20   -231.3  -1.73  5.872 55     12     21   -85.48  0.084  2.499 55     26     21   -115.8  0.114  2.462 56     13     20   -231.3  -1.73  5.864 56     22     20   -320.2  -3.32  5.826 表2 コードA コードB コードC データA データB データC 56     22     20   -320.2  -3.32  5.826←コードCが20のグループでデータBが絶対値の最大値を持つデータ 55     26     21   -115.8  0.114  2.462←コードCが21のグループでデータBが絶対値の最大値を持つデータ 48     20     22   -248.3  4.102  3.826←コードCが22のグループでデータBが絶対値の最大値を持つデータ

専門家に質問してみよう