• ベストアンサー

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

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

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

  • ベストアンサー
回答No.1

G3:G6にA~Bのタイトル入力,その右のH列に度数分布作成 H2に開始日,I2に終了日を入力 Sub macro() Dim c As Range Dim c1 As Range Dim c2 As Range Dim d(1 To 2) As Date Set c1 = Range("B2") d(1) = CDate(Range("H2").Value) d(2) = CDate(Range("I2").Value) For Each c In Range(c1, c1.End(xlDown)) If c.Offset(0, 3) >= d(1) And c.Offset(0, 3) <= d(2) Then Set c2 = Range("G3") Do While c2 <> "" If c2.Value = c.Value Then c2.Offset(0, 1).Value = c2.Offset(0, 1).Value + 1 Set c2 = c2.Offset(1) Loop End If Next c

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

その他の回答 (1)

回答No.2

ANo.1です.動作確認済みですが,コードの最終行にEnd Subを入れて下さい.コピペで抜けてました.すいません.

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

関連するQ&A

  • 関数で可視セルのデータ個数カウント

    Excel2002を使用しています。 オートフィルタで抽出したデータの個数を関数で カウントしたいのですが、可視セルのみをカウント 出来る関数はあるのでしょうか? 例えば   A 1 件数 2  2 3  1 4  3 5  1 6 関数 A6セルに何らかの関数を入れておき、 A列のオートフィルタを使って、1を抽出した時は A6に”2” 3を抽出した時はA6に”1”を表示させたいの です。 このように、可視セルのデータ個数のみを カウントする関数はありますでしょうか? フィルタを使わずにCOUNTIF関数でカウントする 方法、また、可視セルをコピー貼り付け後 カウントする方法は避け、あくまでフィルタで 抽出したデータの個数を瞬時にカウントしたいの です。 ご教授宜しくお願いします。

  • EXCELのオートフィルターで抽出されたレコード件数をVBAで参照する方法は?

    EXCELのオートフィルターで抽出されたデータの件数が、左下のステータスバーに表示されますが、その抽出件数をVBAで取得する方法を教えてください。

  • Excel 2007 複数条件での件数カウント2

    Excel2007で作業をしており、添付のように各部署ごとに件数をカウントしたいです。 空欄のセルに件数が抽出されるような式をご教示いただけますと幸いです。 よろしくお願いいたします。

  • アクセス:クロス集計の抽出条件-2

    質問No.9247365 で類似した質問をしました。 添付のようなテーブルがあり下記のSQLを実行するとクエリ1になるのですが、カウントに抽出条件を入れてクエリ3のように合計件数が1のものは集計しないようしたいと思います。 下記SQLをどのように直したらよいでしょうか。一つのクエリで行う方法を教えて下さい。 TRANSFORM Count([テーブル1].[くだもの]) AS くだもののカウント SELECT [テーブル1].[くだもの], Count([テーブル1].個数) AS 合計 FROM テーブル1 GROUP BY [テーブル1].[くだもの] PIVOT [テーブル1].月;

  • 日付をカウントした後にその列の金額を合計する関数

    下記のような表があります。まずA列の10月の件数をカウントしたい。 次にカウントした(抽出した)もののB列の数字を合計したい。 件数をカウントするものはCOUTIF関数で出来たのですがそこで 抽出されたものを合計する関数がわかりません。ここでオートフィルタ を使用するものは検索できたのですが出来れば関数を使用して 合計値を出せればと思っています。 お分かりになる方がいらっしゃいましたらお教えください。 よろしくお願いいたします。   A    B 1 10/1 30 2 10/2 10  3 11/1 20 4 11/2 10

  • Excelのオートフィルタで抽出した件数の表示

    Excelのオートフィルタで抽出した件数が確か、画面の枠の下に表示できたと思うのですが、どこで設定すればいいのかよく分かりません。Excel2002です。

  • 指定した項目名で抽出したデータの個数を数えるマクロ(VBA)

    エクセル2002を使っています。 各支店に作業の進捗状況を報告してもらうため、同じフォーマットで記したエクセル表を提出してもらい、ある項目が入力されている個数の数を調べています。(支店毎にBookは別です) 元々は同じフォーマットだったので個数を数えたいのは「E列」と決まっていたのですが、いざ提出されたシートには、列が挿入や削除され、個数を数えたい列はがD列やF列になっているものもあり、当初使用しようと思っていたマクロが使えなくなってしまいました。 よって、フィルタをかけたい項目名は「完了日」と決まっているので、「完了日」と記されたセルを探し、そこでフィルタをかけて「空白以外のセル」を抽出する→抽出された個数を数えるというマクロを作りたいのですが、初心者の私では上手く出来ません。 初歩的な質問で申し訳ありませんが、宜しくお願いします。 ちなみにフィルタをかけたい項目は1行目にあるとは限りません。 個数を数えるのはブック毎に行ないます。

  • 条件にマッチする行を抽出するVBAを教えてください

    アイデア、またはVBAプログラムの例を教えていただきたく、質問させていただきます excelで、添付画像のようなリスト管理表を作っています。 リストは600行近くになります。 やりたいことは、D3またはE3に商品名または保管庫を入力すると、リスト内から、合致する行だけが抽出される、というもの。 D3とE3は、どちらか片方にのみ条件が入る。D3とE3の内容を変更するとリアルタイムで抽出結果も変更されるようにしたい。 触る人が初心者なので、難しい作業を一切せずに、D3またはE3を打ちかえるだけで必要な項目だけのリストとなり、印刷するだけでいいようにしたいわけです。 本来ならオートフィルタですればいい話ですが、どうしてもD3という離れたセルの入力内容で抽出したいのです。 VBAでなく、D3のセル内容を使ってD8~のオートフィルタが行えるなら、それが一番理想です。 が、自分でやってみた限りはできませんでした。 フィルタオプションならどうかとやってみたところ、一回目は抽出できました。しかし、D3またはE3の条件を変更しても、リアルタイムで抽出結果が切り変わらない。 フィルタオプションの抽出結果を別のセルに出せばいいのですが、そうすると無駄な情報が残り、ただ印刷しただけでOK・・というわけにいきません。(印刷範囲を区切るとかでなく、シートの見栄えが必要な情報だけにならないと…扱う初心者が混乱します) 自分なりには、VBAにより、 D3・E3のセル内容が書き換わったらフィルタオプションの抽出結果をいったん同シートの別セルに出し、抽出結果部分だけを別のシートにカット&ペースト成形。そのシートを印刷させればよい。 という考えになりましたが、やってみたら、なぜか別のブックに同じものが形成され、抽出した結果だけ単独のデータにできません。 そもそももっと良いアイデアがあればそれをおしえていただきたい。 あるいは、VBAで目的達成できるように問題点をご指摘ください。 一応、プログラムを書いておきます ■添付画像のデータが入っているシート(『一覧』という名前のシート)内コード Private Sub Worksheet_Change(ByVal Target As Range) ' If Target.Column = 4 Then If Target.Row >= 3 And Target.Row <= 3 Then Call Filter Call copy End If End If End Sub ■サブルーチンFilter() 標準モジュールに記載 Sub Filter() ' Filter Macro 'フィルタオプションを使って同シート内「D1100」以降に抽出結果を出します ActiveWorkbook.Worksheets("一覧").Select '一覧表はD7~F1000。検索条件はD2~F3までの範囲に名前を付けたもの Range("一覧表").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _ "検索条件"), CopyToRange:=Range("D1100"), Unique:=False Range("A1").Select End Sub ■サブルーチンcopy() 標準モジュールに記載 Sub copy() ' ' copy Macro ' '抽出された内容(45行目~100行目まで)を別のシートにコピーします ActiveWorkbook.Worksheets("一覧").Select Rows("45:100").Select Selection.Cut ActiveWorkbook.Worksheets("抽出結果").Select Rows("4:4").Select Selection.Insert Shift:=xlDown Range("A1").Select End Sub

  • エクセルのオートフィルタの抽出結果表示について

    エクセルのオートフィルタで抽出を行った時、 通常であれば抽出条件に合致するデータの個数が ステータスバーに表示されますが、 どこかのセルに、数式やハイパーリンクが入力してしますと、この個数表示がされなくなります。 オートフィルタを使用することを前提に、 数式等を削除することなく個数表示をする方法がありましたら教えて下さい。 無理の場合、理由をご存知でしたら教えていただきたいと思います。 使用エクセルVer:2000

  • エクセルVBAでフィルタ抽出部分のみのコピー

    エクセルVBAで売上帳を作成していますが、オートフィルタでデータ抽出した後、表示されている行のみをコピーして別シートに貼りつけるにはどうすればよいのでしょう? 別シートは指定したセルに値のみの貼り付けをしたいと思っています。 宜しくお願いします。

このQ&Aのポイント
  • 質問内容: MP3拡張キットの残曲数が0になってしまい、mp3の作成ができなくなってしまいました。製品紹介やマニュアルにも詳細が記載されていないため、どうすればいいかわかりません。ボタンを押しても反応がなく、問い合わせる方法もわかりません。
  • 製品: B'sRecorderGOLD19
  • OS: WIN11
回答を見る