|
はらへりおおかみ さん、おはようございます。
>集計用シートは下のような形で
>というように集計していきたいのですが、国語が入力されている列、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)を選択 (完了)
で、クロス集計表が作成されます。
|
|