| 
    
     |  | はらへりおおかみ さん、おはようございます。 
 >集計用シートは下のような形で
 >というように集計していきたいのですが、国語が入力されている列、Aが入力されてい
 る行に国語がA評価になっている人の数を入力するにはどうしたら良いのでしょうか?
 
 VBAではSelectCaseやIfで分岐する方法もありますが、エクセルの機能のピボットテーブルで編集して、マクロの記録をしたものをちょっといじったのがこれ。
 
 Sub Test()
 Dim PT As PivotTable, r1 As Range, r2 As Range
 With Worksheets("Pivot集計用") 'こういう名前のシートを準備
 Set r2 = .Range("A1")
 '既存テーブルクリア
 If .PivotTables.Count > 0 Then .PivotTables(1).TableRange2.Clear
 End With
 '
 With Worksheets("入力用") 'こういう名前のシートを準備
 '1行目には「項目」「成績」が入っていること
 Set r1 = .Range(.Range("A1"), .Range("B1").End(xlDown))
 Set PT = .PivotTableWizard(SourceType:=xlDatabase, _
 SourceData:=r1, _
 TableDestination:=r2, _
 TableName:="Pivot" & .PivotTables.Count)
 PT.AddFields RowFields:="成績", ColumnFields:="項目"
 PT.PivotFields(1).Orientation = xlDataField
 End With
 Set PT = Nothing
 End Sub
 
 こんな感じです。
 
 手動でピボットを作る場合は、データ範囲を選択して、
 データ → ピボットテーブルレポート
 エクセルのリスト/データベース (次へ)
 範囲(選択していたらそのまま) (次へ)
 エクセルのリスト/データベース (次へ)
 列FieldとデータFieldに項目を、行Fieldに成績をドロップします。 (次へ)
 (データFieldにはデータの個数:項目と表示されていればOK)
 作成先範囲(集計用シートのセルA1)を選択 (完了)
 で、クロス集計表が作成されます。
 
 
 |  |