過去ログ

                                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 型が一致しません」となってしまいます。
 ───────────────────────────────────────  ■題名 : Re:複数の条件にあうデータのカウント  ■名前 : 孫悟空  ■日付 : 02/10/28(月) 19:11  -------------------------------------------------------------------------
   ▼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    
>
 答えになってないかもしれませんが。。
エクセルのピボットテーブル機能で、簡単に集計できると
思うのですが、それではだめな理由があるんでしょうか?
 ───────────────────────────────────────  ■題名 : Re:複数の条件にあうデータのカウント  ■名前 : auxo  ■日付 : 02/10/29(火) 15:04  -------------------------------------------------------------------------
   ▼孫悟空 さんこんにちは。
ご指導ありがとうございます。

また、基本的なことがわかってなくて恐縮です。
ピボットテーブルを使ったことがないのでよくわからないのですが
マクロでは出来ないものなのでしょうか。

ピボットテーブルのウィザードを使ってみていますが
私の飲み込みが悪くうまく出来ません。
もう少しがんばってみます。
 ───────────────────────────────────────  ■題名 : Re:複数の条件にあうデータのカウント  ■名前 : 孫悟空  ■日付 : 02/10/29(火) 22:39  -------------------------------------------------------------------------
   殆ど記録マクロそのものですが、集計対象のデータシートから実行してみてください。
ご参考まで。。
下記の区分は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
 ───────────────────────────────────────  ■題名 : Re:複数の条件にあうデータのカウント  ■名前 : auxo  ■日付 : 02/10/30(水) 19:47  -------------------------------------------------------------------------
   ▼孫悟空 さん:

ありがとうございました。
ピボットテーブルって便利なんですね。
まだピボットテーブルというものが良くわかっていない状態ですので
これから勉強いたします。
 ───────────────────────────────────────  ■題名 : マクロというか、関数を使う方法  ■名前 : ichinose  ■日付 : 02/10/29(火) 23:32  -------------------------------------------------------------------------
   ▼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
 ───────────────────────────────────────  ■題名 : Re:マクロというか、関数を使う方法  ■名前 : auxo  ■日付 : 02/10/30(水) 19:50  -------------------------------------------------------------------------
   ▼ichinose さん:
こんばんわ。

列指定がダメなんですね。
気づきませんでした。

まだまだ勉強不足ですが、これからもよろしくお願いいたします。
ありがとうございました。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 275