Page 275 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼複数の条件にあうデータのカウント auxo 02/10/28(月) 18:00 ┗Re:複数の条件にあうデータのカウント 孫悟空 02/10/28(月) 19:11 ┗Re:複数の条件にあうデータのカウント auxo 02/10/29(火) 15:04 ┣Re:複数の条件にあうデータのカウント 孫悟空 02/10/29(火) 22:39 ┃ ┗Re:複数の条件にあうデータのカウント auxo 02/10/30(水) 19:47 ┗マクロというか、関数を使う方法 ichinose 02/10/29(火) 23:32 ┗Re:マクロというか、関数を使う方法 auxo 02/10/30(水) 19:50 ─────────────────────────────────────── ■題名 : 複数の条件にあうデータのカウント ■名前 : auxo ■日付 : 02/10/28(月) 18:00 -------------------------------------------------------------------------
別シートにあるデータの内容を集計(カウント)したいのですが、 うまくいきません。 【428】ブンブンさんと同じような処理なのですが、別シートにデータがあり、 セル指定カウントしたいのです。 DATAシートには各区分と値が入力されています。 このデータを集計シート上の区分列の値毎にカウントしたいのです。 DATAシート、集計シートは以下のようになっています。 DATAシート----------------------------------- A B 1 区分 値 2 AA 10 3 AA 20 4 BB 10 5 AA 20 6 CC 50 7 AA 20 8 BB 10 9 BB 50 10 CC 10 11 AA 50 12 CC 20 13 BB 40 ・ ・ ・ 集計シート----------------------------------- A B C D 1 AA BB CC 2 10 3 20 4 30 5 40 6 50 区分=AA、値=10をカウントしたい場合に下記を実行してみました。 MsgBox Application.Evaluate("SUMPRODUCT((Sheets(DATAシート).Columns (1)=Sheets(集計シート).Cells(1, 2))*(Sheets(DATAシート).Columns (2)=Sheets(集計シート).Cells(2, 1)))") すると「実行時エラー 13 型が一致しません」となってしまいます。 |
▼auxo さんこんばんは、 下記のようなデータの集計でしたら >DATAシート----------------------------------- > A B >1 区分 値 >2 AA 10 >3 AA 20 >4 BB 10 >5 AA 20 >6 CC 50 >7 AA 20 >8 BB 10 >9 BB 50 >10 CC 10 >11 AA 50 >12 CC 20 >13 BB 40 >・ >・ >・ > > >集計シート----------------------------------- > A B C D >1 AA BB CC >2 10 >3 20 >4 30 >5 40 >6 50 > 答えになってないかもしれませんが。。 エクセルのピボットテーブル機能で、簡単に集計できると 思うのですが、それではだめな理由があるんでしょうか? |
▼孫悟空 さんこんにちは。 ご指導ありがとうございます。 また、基本的なことがわかってなくて恐縮です。 ピボットテーブルを使ったことがないのでよくわからないのですが マクロでは出来ないものなのでしょうか。 ピボットテーブルのウィザードを使ってみていますが 私の飲み込みが悪くうまく出来ません。 もう少しがんばってみます。 |
殆ど記録マクロそのものですが、集計対象のデータシートから実行してみてください。 ご参考まで。。 下記の区分はa1に置いてくださいね。 区分 値 AA 10 AA 20 BB 10 AA 20 CC 50 AA 20 BB 10 BB 50 CC 10 AA 50 CC 20 BB 40 EE 23 DD 50 Sub Piv_Test() Dim CurSheetName As String CurSheetName = ActiveSheet.Name ActiveSheet.PivotTableWizard _ SourceType:=xlDatabase, _ SourceData:=ActiveSheet.Name & "!" & _ ActiveSheet.Range("$a$1").CurrentRegion.AddressLocal(xlR1C1), _ TableDestination:="", TableName:="ピボットテーブル1" ActiveSheet.PivotTables("ピボットテーブル1").AddFields _ RowFields:="区分", ColumnFields:="値" With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("値") .Orientation = xlDataField .Name = "データの個数:値" .Function = xlCount End With Worksheets(CurSheetName).Select End Sub |
▼孫悟空 さん: ありがとうございました。 ピボットテーブルって便利なんですね。 まだピボットテーブルというものが良くわかっていない状態ですので これから勉強いたします。 |
▼auxo さん: ▼孫悟空さん こんばんは。 関数を使用する方法です。 Sumproductは、列全部を指定すると駄目みたいですね。 こんな風にしてみました。 '=============================================================== Sub test2() Dim a列 As String Dim b列 As String With Sheets("DATAシート") a列 = "DATAシート!" & .Range(.Cells(1, 1), .Range("a65536").End(xlUp)).Address b列 = "DATAシート!" & .Range(.Cells(1, 1), .Range("a65536").End(xlUp)).Offset(0, 1).Address End With With Sheets("集計シート").Range("b2:d6") .Formula = "=sumproduct((" & a列 & "=b$1)*(" & b列 & "=$a2))" '.Value = .Value これ入れない方が連動していいかもしれません End With End Sub |
▼ichinose さん: こんばんわ。 列指定がダメなんですね。 気づきませんでした。 まだまだ勉強不足ですが、これからもよろしくお願いいたします。 ありがとうございました。 |