• ベストアンサー

VBA EXCEL 集計 操作 カウント

EXCELのVBAにて「変換」ボタンを押したら 名前と値段が同じ物の個数が表示され 管理番号も並ぶようなプログラムを作りたいのですが どのように構築すればよいでしょうか? 詳しくは図をご覧ください。

この投稿のマルチメディアは削除されているためご覧いただけません。

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

「イチゴ 200」が、何故別々なのかよく見えないので不明ですけど。 Sub try() Dim myDic As Object Dim r As Range, rr As Range Dim st As String Dim key, v Set myDic = CreateObject("Scripting.Dictionary") For Each r In Range("B3", Cells(Rows.Count, 2).End(xlUp)) st = r.Value & "_" & r.Offset(, 1).Value If Not myDic.Exists(st) Then myDic(st) = Array(1, r.Offset(, 2).Value) Else myDic(st) = Array(myDic(st)(0) + 1, myDic(st)(1) & "," & r.Offset(, 2).Value) End If Next Set rr = Range("G3") For Each key In myDic.keys rr.Resize(, 2).Value = Split(key, "_") rr.Offset(, 2).Value = myDic(key)(0) v = Split(myDic(key)(1), ",") rr.Offset(, 3).Resize(, UBound(v) + 1).Value = v Set rr = rr.Offset(1) Next Set myDic = Nothing Set rr = Nothing End Sub こうゆう感じの事でしょうか?

関連するQ&A

  • VBA EXCEL 集計 操作 カウント

    図が不鮮明だったため、再投稿です。 EXCELのVBAにて「変換」ボタンを押したら 名前と値段が同じ物の個数が表示され 管理番号も並ぶようなプログラムを作りたいのですが どのように構築すればよいでしょうか? 詳しくは図をご覧ください。

    • ベストアンサー
    • CSS
  • ACCESS VBA EXCEL クエリ 転記 集計 SQL

    ACCESSからEXCELへ転記する際に以下のような一定の操作を行いたいと考えています。 ACCESSの中で以下のようなクエリがあります。 名前 値段 管理番号 雑誌 500 A1 写真 700 A2 音楽 600 A3 ソフト 500 A4 写真 400 A5 雑誌 500 A6 音楽 900 A7 写真 700 A8 写真 700 A9 ソフト 500 A10 写真 700 A11 これを通常にEXCELへ貼り付ける時には以下のようなプログラムをVBAにて作成し実行してます。 With wkb.Worksheets(stSheet) Do Until rst.EOF 'ここに新たな式を書く .Cells(3+CntGyo,1)=rst![名前] .Cells(3+CntGyo,2)=rst![値段] .Cells(3+CntGyo,3)=rst![管理番号] CntGyo=CntGyo+1 rst.MoveNext Loop End With ここでEXCELに貼り付ける際に以下のようにしたいと考えております。 A列   B列 C列 D列 E列 名前 値段 個数 管理番号 その他の管理番号 雑誌 500 2 A1  A6 写真 700 3 A2  A8,A9,A11 音楽 600 1 A3 ソフト 500 2 A4  A10 写真 400 1 A5 音楽 900 1 A7 名前と値段をグループとして考え、 C列に個数を、D列に管理番号の一番小さい値を示す。 E列にグループ化された管理番号のその他の値を示す。 以上の操作をSQL構文等を使って作れるものなのでしょうか?

  • ACCESS VBA 並び替え 列 カウント

    ACCESSを業務で使用し始めたものです。 ・特定のクエリから一定の操作をしたテーブル ・又は特定の複数のテーブルの抽出項目 を元にコマンドボタンを押した時、 一定操作を行ったテーブルを出力できるVBAソースを作成したいと思ってます。 (クエリ) (複数のテーブル) ⇒ (操作) ⇒ (特定の名前を持ったテーブル) (例)元となるクエリ(複数のテーブルの集合体)が以下にあります。 管理番号|NO|名前 1|NO.1|スプーン 2|NO.2|スプーン 3|NO.3|スプーン 4|NO.1|フォーク 5|NO.2|フォーク 6|""|ナイフ 7|NO.1|お鍋 以下のように一つのテーブルとして出力したい 名前|空白|管理番号|台数 スプーン|空白|1|3 フォーク|空白|4|2 ナイフ|空白|6|1 お鍋|空白|7|1 テーブル変換の機能 ・名前が同じ物の個数を表示する ・名前が同じ物の管理番号は若い番号にする ・列のならびを 管理番号|NO|名前 → 名前|空白|管理番号|台数 ・元のテーブルやクエリは消さない ・NOがふられていない項目についても台数をカウントする(ナイフのように) 至急に必要なので、コードを頂ければとても幸いですが やりかたの方向性でも結構です。 よろしくお願いいたします。

  • ACCESS ACCESS VBA テーブル テーブル変換 番号 個数 変換

    私はプログラム初心者です。 業務の中でACCESSを使っております。 ACCESSでテーブルの変換についてのプログラムが分からなかったので 質問させて頂きました。 以下のようなテーブル(テーブル1)があります。 管理番号|NO|名前 1|NO.1|スプーン 2|NO.2|スプーン 3|NO.3|スプーン 4|NO.1|フォーク 5|NO.2|フォーク 6|""|ナイフ 7|NO.1|お鍋 以上のテーブルを新たにテーブル(テーブル2)を作成し、次のようなにしたいです。 管理番号|台数|名前 1|3|スプーン 4|2|フォーク 6|1|ナイフ 7|1|お鍋 テーブル変換の機能 ・名前が同じ物の個数を表示する ・名前が同じ物の管理番号は若い番号にする よろしくお願いいたします。

  • VBAのFaceIdでメニューボタンに独自の図を表示したいのですが。

    たびたび申し訳ありません。 EXCELのVBAを作成しています。 そのVBAマクロを実行するためのメニューボタンに、自分独自の図を表示したいと思っています。 VBAのCommandBars.Addでメニューボタンの作成までできましたが、 (OKWEBのお陰です。有り難う御座います。) 図を張り付けるため、FaceIdを使って、イメージ図を表示させようと思っています。 適当なFaceId番号をセットすると表示するところまではできますが、自分でどのようにして、その図を作成するのかがわかりません。 できれば、自分用のフォルダにイメージ図を作成して、それをボタン表示したいと思っています。 申し訳ありませんが、ご経験のある方宜しくお願い申し上げます。

  • VBA EXCEL EXCEL 出力 コマンドボタン

    EXCELに設置されたコマンドボタンを実行すると EXCELからEXCELへデータを出力できるようなVBAプログラムはあるのでしょうか? サンプルなど紹介して頂けたらと思います。

  • vb から Excel vba をうまく操作できない。

    VB 初心者で、困っています。 Excel VBA でいろんなツールを作成していますが数が多くなったので、今回、このツールを呼び出すメニューを作ろうと考えて、VB2008でメニューを作成したのですがうまく動作しません。 Excel VBAで作成しているツールは、単独で動作させれば、一番最後に新たなExcelファイルを作成・画面表示でツール自体は終了。となるのですが、VBメニューからツールを起動させると、最後に作成しているはずのExcelファイルが画面表示されません。(ファイルは作成されているみたいですが・・・) ・Excel VBA の新たなファイルへの出力部分です。     Worksheets("シート").Copy     Unload Me     Application.WindowState = xlMaximized     Workbooks("●●.xls").Close SaveChanges:=False ・VB2008 で呼び出すメニューボタン部分です。 Dim Exap As Object Exap = CreateObject("Excel.application") Exap.Workbooks.open("C:\●●.xls") Exap = Nothing よろしくお願いします。

  • EXCEL2007でVBAが動かない

    私の知り合いがWindowsMeを使っていて、個人的に株の取引をしています。知り合いから頼まれて、その株の管理をするための表をEXCELで作りました。そして、その管理表の空白部を非表示にするため、次のようなプログラムをVBAで作りました。 "If ActiveSheet.Name = "銘柄別取引明細" Then ActiveSheet.Unprotect Rows(CStr(1) & ":" & CStr(登録最大件数 + タイトル行 + 1)).EntireRow.Hidden = False 表示最大行 = 表示最大行検索((タイトル行 + 1), "A") Rows(CStr(表示最大行 + 2) & ":" & CStr(登録最大件数 + タイトル行)).EntireRow.Hidden = True ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End If End Sub" 登録最大件数=100と最初に定義しています。表示最大行検索は別にサブプロシジャを作っています。 さて、知り合いのパソコンが壊れて、新しくパソコンを買いました。当然、Vistaです。新しいパソコンに、このEXCELファイルをメモリから読み込ませ、開いてみると、動きません。セキュリティの問題かと思い、「全てのマクロを有効にする」にして、さらに「開発者を信用する」をオンにしてみましたが、動きません。 調べてみると、VBAの、"Rows(CStr(1) & ":" & CStr(登録最大件数 + タイトル行 + 1)).EntireRow.Hidden = False"でプログラムが止まってしまっています。 理由が分かりません。誰か教えてください。 しかし、何でEXCEL2007になると、突然、プログラムが動かなくなるのでしょうか。EXCEL2007では不具合になるようなことがあったとしても、自動的に、EXCEL2007に合うよう、変換するサービスがあってもいいと思うのですが。 それも含めて助けてください。

  • Excel 条件付集計(Excel2002)

    おそらく出来ると思うのですが どうしても思いつきません。 顧客番号  日付   合計個数 001    2004/2/5  ○個 002    2004/3/8  ○個 003    2004/4/1  ○個 と言うデータがあるシート1(顧客リストのような物)と、 注文番号  顧客番号  日付   個数 A001    003    2004/1/1   1 A002    001    2004/1/3   1 A003    001    2004/2/8   2 A004    002    2004/3/10  2 A005    001    2004/3/18  3 と言うデータが入ったシート2(注文リストのような物)があるとします。 そこで顧客番号で検索して、 「シート1の日付よりあとの注文」 の個数を合計して、シート1の合計個数のところに表示する。 と言うシステムが欲しいです。(わかりにくくてすみません) つまり上の例で言うと シート1の001の合計個数には シート2の001のデータで2004年2月5日以降の個数だけを合計して、 「5個」と表示されて欲しいのです。 多分関数で行けると思うのですが、 無理でしたらマクロでも構いません。 お判りになられる方がいましたらぜひよろしくお願いします。

  • Excel シート検索 VBA

    現在、機器管理としてExcelで管理を行っているのですが、使用履歴等の情報が多い為、機器1台に対して1つのシートを使用しています。 ただ、機器が多くなってきており、現時点でも20シートを使用している状態で、今後も増えていく予定ですので、VBAで対象のシートを探すプログラムを作成して、効率を上げたいと思っております。 ただ、VBAの知識がない為、こちらに質問させて頂きました。 イメージとしては、機器の製造番号を入力して、ボタンを押すと、各シートの製造番号が記載されている指定のセルを検索して、その製造番号のシートにジャンプするプログラムを作りたいと思っています。 VBAに詳しい方、ご教授をお願いいたします。

専門家に質問してみよう