当サイトは各記事にプロモーションが含まれています

ポイ活最強アプリおすすめ8選【2024年これだけ使っていれば間違いなしです】

2024年
最強ポイ活アプリ

TikTok Liteとは?初心者向けにアプリを徹底解説【完全ガイド】

TikTok Liteで
稼ぐ

歩いてポイントを貯めることができる無料アプリおすすめ15選【年間1万円以上稼げます】

歩数・移動で
稼ぐ

ポイ活できるパズルゲームおすすめアプリ5選【楽しんで小遣い稼ぎ】

ゲームで
稼ぐ

招待コード ポイ活アプリ

招待コード・キャンペーン

 
TikTok Lite(ティックトックライト)の招待された側のやり方を解説【注意事項あり】

TikTok Lite(ティックトックライト)の招待された側のやり方を解説【注意事項あり】

 
ポイントインカムの紹介コードは知らない人のでも大丈夫?【個人情報バレるか解説】

ポイントインカムの紹介コードは知らない人のでも大丈夫?【個人情報バレるか解説】

 
トリマの招待コードは知らない人でも大丈夫【2024年最新の友達紹介特典と注意点】

トリマの招待コードは知らない人でも大丈夫【2024年最新の友達紹介特典と注意点】

おすすめゲームアプリ

 
ソリティアでポイ活できる?【PayPayや楽天ポイントが遊んで貯まるアプリ紹介】

ソリティアでポイ活できる?【PayPayや楽天ポイントが遊んで貯まるアプリ紹介】

 
ポイ活ジグソーの口コミ・評判を調査【楽天ポイントを楽しんで稼げる?】

ポイ活ジグソーの口コミ・評判を調査【楽天ポイントを楽しんで稼げる?】

 
ナンプレでポイントが貯まる?【ポイ活できるアプリやいくら稼げるか解説】

ナンプレでポイントが貯まる?【ポイ活できるアプリやいくら稼げるか解説】

ポイントの貯め方

PayPay

 
PayPayポイントの貯め方6選【無料おすすめのポイ活で貯める方法を解説】

PayPayポイントの貯め方6選【無料おすすめのポイ活で貯める方法を解説】

 
PayPayポイントを貯めるゲームアプリ紹介【安全かつ無料にポイ活しよう】

PayPayポイントを貯めるゲームアプリ紹介【安全かつ無料にポイ活しよう】

 
PayPayポイントを歩いて貯めるおすすめアプリ8選【全て無料です】

PayPayポイントを歩いて貯めるおすすめアプリ8選【全て無料です】

 
TikTok Lite(ティックトックライト)のPayPayのもらい方【4000円を交換まで解説】

TikTok Lite(ティックトックライト)のPayPayのもらい方【4000円を交換まで解説】

楽天ポイント

 
楽天ポイントがすぐもらえるポイ活4選【即時・即日付与の方法もあります】

楽天ポイントがすぐもらえるポイ活4選【即時・即日付与の方法もあります】

 
楽天ポイントを貯めるゲームアプリ5選【無料でポイ活しやすい方法も紹介】

楽天ポイントを貯めるゲームアプリ5選【無料でポイ活しやすい方法も紹介】

 
歩くだけで楽天ポイントが貯まるアプリ一覧【おすすめを紹介!】

歩くだけで楽天ポイントが貯まるアプリ一覧【おすすめを紹介!】

 
TikTok Liteは楽天ポイントに交換できる?【通常ポイントでのもらい方】

TikTok Liteは楽天ポイントに交換できる?【通常ポイントでのもらい方】

dポイント

 
dポイントを歩いて貯める無料アプリ一覧【ドコモユーザー以外も必見】

dポイントを歩いて貯める無料アプリ一覧【ドコモユーザー以外も必見】

 
dポイントをレシートで貯めるおすすめアプリ紹介【ドコモユーザー必見】

dポイントをレシートで貯めるおすすめアプリ紹介【ドコモユーザー必見】

 
TikTok Liteでdポイントへの交換はやめとけ【d払い残高が良い理由を紹介】

TikTok Liteでdポイントへの交換はやめとけ【d払い残高が良い理由を紹介】

Pontaポイント

 
歩くだけでPontaポイントを貯められるアプリ紹介【併用しよう】

歩くだけでPontaポイントを貯められるアプリ紹介【併用しよう】

 
Pontaポイントを貯めるポイントサイト&ポイ活アプリおすすめ8選【無料で稼ぐ】

Pontaポイントを貯めるポイントサイト&ポイ活アプリおすすめ8選【無料で稼ぐ】

 
auのポイント(ポンタ)を貯めるゲームアプリ紹介【ポイ活おすすめ】

auのポイント(ポンタ)を貯めるゲームアプリ紹介【ポイ活おすすめ】

ポイ活方法

おすすめポイ活アプリ紹介

 
ポイ活で1日100円稼ぐアプリとポイントを貯める方法を紹介【初級編】

ポイ活で1日100円稼ぐアプリとポイントを貯める方法を紹介【初級編】

 
ANAマイルを貯めるのはクレジットカードなしでも可能【おすすめの貯め方を紹介】

ANAマイルを貯めるのはクレジットカードなしでも可能【おすすめの貯め方を紹介】

 
ほったらかし・放置でポイ活できるおすすめアプリ4選【手間を無くそう】

ほったらかし・放置でポイ活できるおすすめアプリ4選【手間を無くそう】

おすすめポイ活アプリ紹介

 
仮想通貨をコツコツ稼ぐおすすめアプリ6選【日々のちょっとした作業で良い】

仮想通貨をコツコツ稼ぐおすすめアプリ6選【日々のちょっとした作業で良い】

 
車の走行距離でポイントを貯めるアプリおすすめ7選【移動でポイ活】

車の走行距離でポイントを貯めるアプリおすすめ7選【移動でポイ活】

 
LINEのポイントを貯めるゲームアプリおすすめ紹介【一番稼げるのは?】

LINEのポイントを貯めるゲームアプリおすすめ紹介【一番稼げるのは?】

おすすめプロテイン

プロテインの味

 
レイズのプロテインおすすめの味ランキング【人気の味を口コミ・評判を基に評価】

レイズのプロテインおすすめの味ランキング【人気の味を口コミ・評判を基に評価】

 
ゴールドスタンダードの味をランキング形式で紹介【おすすめはどの味?】

ゴールドスタンダードの味をランキング形式で紹介【おすすめはどの味?】

 
【GronG/グロング】スタンダードとベーシックの違いは?【おすすめが決定】

【GronG/グロング】スタンダードとベーシックの違いは?【おすすめが決定】

安く買う方法

 
LYFT(リフト)のプロテインはどこで売ってる?【安く買う方法を紹介】

LYFT(リフト)のプロテインはどこで売ってる?【安く買う方法を紹介】

 
ULTORA(ウルトラ)のプロテインを安く買う方法を紹介【必見!】

ULTORA(ウルトラ)のプロテインを安く買う方法を紹介【必見!】

 
SAVAS(ザバス)を安く買う方法を紹介【普通に買うと高い?どこで買える?】

SAVAS(ザバス)を安く買う方法を紹介【普通に買うと高い?どこで買える?】

新着&プロフィール

VBAを活用して自動クロス集計【Excelマクロとピボットテーブルの応用術】

VBAを活用して自動クロス集計【Excelマクロとピボットテーブルの応用術】

この記事では、タイトルの通りピボットテーブル、VBAを活用して自動でクロス集計をする方法を紹介します。

 

基本的にコードを紹介するので、好きにコピペして活用ください!

 

VBAの環境構築方法については以下を参考にしてください。

 

早速ですが、以下のような表があるとします。

表

この表を自動でクロス集計をし、以下のような結果にする。

クロス集計後の表

 

手順としては、以下のような感じです。

①ピボットテーブル作成

②クロス集計

③シートへ貼り付け

④デザインの調整

 

①ピボットテーブル作成

まず初めに、ピボットテーブルを作成します。コードは以下の通りです。

 

    ' ピボットテーブル用のシート追加
    Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = "ピボットテーブル"

    ' ピボットキャッシュ作成 → ピボットテーブル作成
    ThisWorkbook.PivotCaches.Create(xlDatabase, Worksheets("Sheet1") _
    .Range("A1:I19")).CreatePivotTable Sheets("ピボットテーブル").Range("A3"), "ピボットテーブル1"
    
   ' ピボット選択 Sheets("ピボットテーブル").Select Cells(3, 1).Select  

この時点では、以下のような画像となります。

ピボットテーブル作成時点

 

 

また、ここで活用したコードの種類としては、

  • シートの追加
  • ピボットキャッシュ、ピボットテーブルの作成
  • セルの選択

 

シートの追加

    ' ピボットテーブル用のシート追加
    Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = "ピボットテーブル"

 

シートの追加に関しては、以下の記事をご覧ください。

 

ピボットキャッシュ、ピボットテーブルの作成

    ' ピボットキャッシュ作成 → ピボットテーブル作成
    ThisWorkbook.PivotCaches.Create(xlDatabase, Worksheets("Sheet1") _
    .Range("A1:I19")).CreatePivotTable Sheets("ピボットテーブル").Range("A3"), "ピボットテーブル1"

 

ピボットキャッシュ、ピボットテーブルの作成に関しては、以下の記事をご覧ください。

 

セルの選択

    Sheets("ピボットテーブル").Select
    Cells(3, 1).Select

 

セルの選択に関しては、以下の記事をご覧ください。

 

②クロス集計

    ' フィールド設定
    With ActiveSheet.PivotTables("ピボットテーブル1")
        .PivotFields("学年").Orientation = xlRowField
        .PivotFields("国語").Orientation = xlDataField
        .PivotFields("数学").Orientation = xlDataField
        .PivotFields("英語").Orientation = xlDataField
        .PivotFields("社会").Orientation = xlDataField
        .PivotFields("理科").Orientation = xlDataField
    End With
    
    
    ' 平均値設定
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("合計 / 国語")
        .Function = xlAverage
    End With
    
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("合計 / 数学")
        .Function = xlAverage
    End With
    
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("合計 / 英語")
        .Function = xlAverage
    End With
    
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("合計 / 社会")
        .Function = xlAverage
    End With
    
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("合計 / 理科")
        .Function = xlAverage
    End With

 

この時点では、以下のような画像となります。

ピボットテーブルの値を平均値に変更した表

 

また、ここで活用したコードの種類としては、

  • ピボットのフィールド設定
  • 値を平均値に変更

 

ピボットのフィールド設定

    ' フィールド設定
    With ActiveSheet.PivotTables("ピボットテーブル1")
        .PivotFields("学年").Orientation = xlRowField
        .PivotFields("国語").Orientation = xlDataField
        .PivotFields("数学").Orientation = xlDataField
        .PivotFields("英語").Orientation = xlDataField
        .PivotFields("社会").Orientation = xlDataField
        .PivotFields("理科").Orientation = xlDataField
    End With

 

ピボットフィールドの設定に関しては、以下の記事をご覧ください。

 

値を平均値に変更

    ' 平均値設定
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("合計 / 国語")
        .Function = xlAverage
    End With
    
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("合計 / 数学")
        .Function = xlAverage
    End With
    
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("合計 / 英語")
        .Function = xlAverage
    End With
    
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("合計 / 社会")
        .Function = xlAverage
    End With
    
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("合計 / 理科")
        .Function = xlAverage
    End With

値の設定は以下の記事をそれぞれご覧ください。

 

③シートへ貼り付け

    ' 表作成用のシート追加
    Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = "集計結果"
    
    ' ワークシートを変数に入れる
    Dim cross, pivot As Worksheet
    Set pivot = Worksheets("ピボットテーブル")
    Set cross = Worksheets("集計結果")
    
    ' 表のタイトルを入力
    With cross.Range("A2")
        .Value = "学年別平均値"
        .Font.Size = 14
        .Font.Bold = True
    End With
    
    ' ピボットテーブルをコピーして値貼り 
    pivot.Range("A4:F7").Copy
    cross.Range("A3").PasteSpecial Paste:=xlPasteValues

この時点では、以下のような画像となります。

値貼り後の表

 

また、ここで活用したコードの種類としては、

  • シートの追加
  • シートを変数に入れる
  • セルに文字を入力
  • 値貼り

 

シートを変数に入れる

    ' 表作成用のシート追加
    Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = "集計結果"

シートを変数に入れる

    ' ワークシートを変数に入れる
    Dim cross, pivot As Worksheet
    Set pivot = Worksheets("ピボットテーブル")
    Set cross = Worksheets("集計結果")

セルに文字を入力

    ' 表のタイトルを入力
    With cross.Range("A2")
        .Value = "学年別平均値"
        .Font.Size = 14
        .Font.Bold = True
    End With

 

セルへの文字の入力に関しては、以下の記事をご覧ください。

 

値貼り付け

    pivot.Range("A4:F7").Copy
    cross.Range("A3").PasteSpecial Paste:=xlPasteValues

 

値貼り付けに関しては、以下の記事をご覧ください。

④デザインの調整

    ' 項目名変更+列幅調整
    With cross.Range("A3")
        .Value = "学年/科目"
        .Columns.AutoFit
    End With
    
    ' 列幅調整
    cross.Range("B3:F3").Columns.AutoFit
    
    '学年の表示形式
    cross.Range("A4:A6").NumberFormatLocal = "0年"
    
    '点数の小数点第1位表示+点数の表示形式
    cross.Range("B4:F6").NumberFormatLocal = "0.0点"
    
    '罫線
    cross.Range("A3:F6").Borders.LineStyle = xlContinuous
    
    'セルの色を変更
    cross.Range("A3:F3").Interior.Color = RGB(169, 208, 142)
    cross.Range("A4:A6").Interior.Color = RGB(198, 224, 180)

 

この時点では、以下のような画像となります。

デザインを整えた後の表

 

また、ここで活用したコードの種類としては、

  • 項目名変更+列幅調整
  • 表示形式の変更
  • 枠線
  • セルの背景の塗りつぶし

 

項目名変更+列幅調整

    ' 項目名変更+列幅調整
    With cross.Range("A3")
        .Value = "学年/科目"
        .Columns.AutoFit
    End With
    
    ' 列幅調整
    cross.Range("B3:F3").Columns.AutoFit

 

列幅の調整については、以下の記事をご覧ください。

 

表示形式の変更

    '学年の表示形式
    cross.Range("A4:A6").NumberFormatLocal = "0年"
    
    '点数の小数点第1位表示+点数の表示形式
    cross.Range("B4:F6").NumberFormatLocal = "0.0点"

 

セルの表示形式の変更については、以下の記事をご覧ください。

 

罫線

    '罫線
    cross.Range("A3:F6").Borders.LineStyle = xlContinuous

 

罫線の引き方については、以下の記事をご覧ください。

セルの背景の塗りつぶし 

    'セルの色を変更
    cross.Range("A3:F3").Interior.Color = RGB(169, 208, 142)
    cross.Range("A4:A6").Interior.Color = RGB(198, 224, 180)
 

総括

この時点で、学年別平均点を出しました。学年別最大値と最小値を出すためには、ピボットテーブルの値を変更し、貼り付けるセルを変えれば良いだけです。

 

全てのコードは以下のようになります。

Sub ピボット作成()

    ' ピボットテーブル用のシート追加
    Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = "ピボットテーブル"

    ' ピボットキャッシュ作成 → ピボットテーブル作成
    ThisWorkbook.PivotCaches.Create(xlDatabase, Worksheets("Sheet1") _
    .Range("A1:I19")).CreatePivotTable Sheets("ピボットテーブル").Range("A3"), "ピボットテーブル1"
    
    Sheets("ピボットテーブル").Select
    Cells(3, 1).Select
    
    ' フィールド設定
    With ActiveSheet.PivotTables("ピボットテーブル1")
        .PivotFields("学年").Orientation = xlRowField
        .PivotFields("国語").Orientation = xlDataField
        .PivotFields("数学").Orientation = xlDataField
        .PivotFields("英語").Orientation = xlDataField
        .PivotFields("社会").Orientation = xlDataField
        .PivotFields("理科").Orientation = xlDataField
    End With
    
    
    ' 平均値設定
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("合計 / 国語")
        .Function = xlAverage
    End With
    
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("合計 / 数学")
        .Function = xlAverage
    End With
    
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("合計 / 英語")
        .Function = xlAverage
    End With
    
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("合計 / 社会")
        .Function = xlAverage
    End With
    
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("合計 / 理科")
        .Function = xlAverage
    End With
    
    ' 表作成用のシート追加
    Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = "集計結果"
    
    ' ワークシートを変数に入れる
    Dim cross, pivot As Worksheet
    Set pivot = Worksheets("ピボットテーブル")
    Set cross = Worksheets("集計結果")
    
    ' 表のタイトルを入力
    With cross.Range("A2")
        .Value = "学年別平均値"
        .Font.Size = 14
        .Font.Bold = True
    End With
    
    ' ピボットテーブルをコピーして値貼り
    pivot.Range("A4:F7").Copy
    cross.Range("A3").PasteSpecial Paste:=xlPasteValues
    
    ' 項目名変更+列幅調整
    With cross.Range("A3")
        .Value = "学年/科目"
        .Columns.AutoFit
    End With
    
    ' 列幅調整
    cross.Range("B3:F3").Columns.AutoFit
    
    '学年の表示形式
    cross.Range("A4:A6").NumberFormatLocal = "0年"
    
    '点数の小数点第1位表示+点数の表示形式
    cross.Range("B4:F6").NumberFormatLocal = "0.0点"
    
    '罫線
    cross.Range("A3:F6").Borders.LineStyle = xlContinuous
    
    'セルの色を変更
    cross.Range("A3:F3").Interior.Color = RGB(169, 208, 142)
    cross.Range("A4:A6").Interior.Color = RGB(198, 224, 180)
    
    Application.Goto Sheets("ピボットテーブル").Range("A3")
    
    '最大値設定
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("平均 / 国語")
        .Function = xlMax
    End With
    
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("平均 / 数学")
        .Function = xlMax
    End With
    
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("平均 / 英語")
        .Function = xlMax
    End With
    
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("平均 / 社会")
        .Function = xlMax
    End With
    
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("平均 / 理科")
        .Function = xlMax
    End With

    ' 表のタイトルを入力
    With cross.Range("A8")
        .Value = "学年別最高得点"
        .Font.Size = 14
        .Font.Bold = True
    End With
    
    ' ピボットテーブルをコピーして値貼り
    pivot.Range("A4:F7").Copy
    cross.Range("A9").PasteSpecial Paste:=xlPasteValues
    
    ' 項目名変更+列幅調整
    With cross.Range("A9")
        .Value = "学年/科目"
        .Columns.AutoFit
    End With
    
    cross.Range("B9:F9").Columns.AutoFit
    
    '学年の表示形式
    cross.Range("A10:A12").NumberFormatLocal = "0年"
    
    '点数の表示形式
    cross.Range("B10:F12").NumberFormatLocal = "0点"
    
    '罫線
    cross.Range("A9:F12").Borders.LineStyle = xlContinuous
    
    'セルの色を
    cross.Range("A9:F9").Interior.Color = RGB(169, 208, 142)
    cross.Range("A10:A12").Interior.Color = RGB(198, 224, 180)

    '最小値設定
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("最大 / 国語")
        .Function = xlMin
    End With
    
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("最大 / 数学")
        .Function = xlMin
    End With
    
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("最大 / 英語")
        .Function = xlMin
    End With
    
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("最大 / 社会")
        .Function = xlMin
    End With
    
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("最大 / 理科")
        .Function = xlMin
    End With

    With cross.Range("A14")
        .Value = "学年別最低得点"
        .Font.Size = 14
        .Font.Bold = True
    End With
    
    pivot.Range("A4:F7").Copy
    cross.Range("A15").PasteSpecial Paste:=xlPasteValues
    
    With cross.Range("A15")
        .Value = "学年/科目"
        .Columns.AutoFit
    End With
    
    cross.Range("B15:F15").Columns.AutoFit
    
    '学年の表示形式
    cross.Range("A16:A18").NumberFormatLocal = "0年"
    
    '点数の表示形式
    cross.Range("B16:F18").NumberFormatLocal = "0点"
    
    '罫線
    cross.Range("A15:F18").Borders.LineStyle = xlContinuous
    
    'セルの色を
    cross.Range("A15:F15").Interior.Color = RGB(169, 208, 142)
    cross.Range("A16:A18").Interior.Color = RGB(198, 224, 180)

End Sub

 

3種類の表で全てデザインが同じの場合、先にピボットテーブルのコピペを済ませて、デザインを最後に一括で整えるようにすれば、コードを短くすることができるので、ぜひチャレンジしてみてください。

 

以下の書籍はマクロを勉強するためにおすすめの書籍となります。これからさらに勉強される方は、ぜひ一読下さい。