1️⃣ はじめに
- 今回は、正式にリリースされたNotionAIを使用して、コードリーディングの方法をご紹介していきます。
- Notion AIを使うことで、VBAの処理内容ごとにコードが分割され、見出しがついて、説明文を記述することが出来ます。
- 後半ではNotion AIのコード改善の指示にしたがってピボットテーブル・ピボットグラフを自動生成するコードを追加していきます。
- それでは早速、生成方法を動画で確認していきましょう!
そもそもNotion AIって?
📖
プロジェクト管理やタスク管理、ノート作成、データベース作成などの機能を提供するアプリケーション「Notion」に組み込まれた人工知能(AI)機能のことです。
2️⃣ Notion AIの利用方法について
- Notion は個人利用の場合、無料で利用できます。
- Notionそのものは個人利用の場合無料ですが、
Notion AI
を利用する場合は、月額$10のサブスクリプションサービスの契約が必要です。
- Notionの入力画面でスペースを入力することで
Notion AI
への指示が可能です。
3️⃣ Notion AIによるコードリーディングの方法
- 今回は、前回ChatGPTで作成したダミーデータを作成するVBAコードのコードリーディングを行います。
- ダミーデータ作成の方法についてはこちらの記事をご覧ください。
ChatGPTで売上表を量産するVBAコードを作成!10,000行のダミーの売上表データを生成するテクニックをご紹介!
- まずはVBAコードをコードブロックとしてNotionに貼り付けます。
- /コマンドを使用して/codeと入力するコードブロックの入力が可能です。
- コードブロックにコードを貼り付けます。
- コードブロックの続きにNotion AIの指示文を記述します。
🪄
「上記のコードを上から順番に細かく説明してください。
・処理内容ごとに見出しをつけてください
・処理内容ごとにコードブロックを作成してください
・処理内容ごとに説明してください」
・処理内容ごとに見出しをつけてください
・処理内容ごとにコードブロックを作成してください
・処理内容ごとに説明してください」
- コードが生成されていきます。
- 以下のように処理内容ごとにコードが分割され、見出しがついて、処理の内容の説明文が記述されました。
マスターデータの定義
行数の入力
ヘッダー行の作成
ランダムな日付の範囲を指定
データ行の生成
処理の終了
- Notion AIではページに対してさらに指示文を追加することが可能です。
🪄
「・プログラムの内容を説明してください。
・プログラムの実行方法を説明してください。
・プログラムの改善点を教えてください。」
・プログラムの実行方法を説明してください。
・プログラムの改善点を教えてください。」
- プログラムの全体内容、実行方法、改善点が記述されました。
- プログラムの改善点に従って、ピボットテーブルの集計、グラフ化を自動化するVBAコードを記述します。
🪄
上記のコードにピボットテーブル化、グラフ化するコードを追加して記述してください。
- 改善後のVBAコードが生成されました。
4️⃣ 改善後のVBAコードを実行
- このコードを実行することで、売上データをピボットテーブル化し、グラフ化することができます。
- VBEに貼り付けてF5キーで実行します。
- 売上表データとピボットテーブル、ピボットグラフが生成されました。
- 以上でNotion AIによるVBAコードの改善が完了しました。
Notion AIによる改善後のVBAコード
Option Explicit
Sub GenerateSalesData()
' マスターデータの配列を定義
Dim masterData As Variant
masterData = Array(Array(1, "佐藤商事", "食品", "F001", "チョコレート", 150), _
Array(2, "田中電機", "家電", "E022", "スマートフォン", 80000), _
Array(3, "山田化粧品", "化粧品", "C003", "リップスティック", 2000), _
Array(4, "加藤衣料品", "衣料品", "A010", "ファッションTシャツ", 500), _
Array(5, "伊藤エンターテイメント", "エンターテイメント", "M007", "映画「スパイダーマン」", 1800), _
Array(6, "木村日用品", "日用品", "H031", "バスタオル", 1200), _
Array(7, "渡辺薬品", "医薬品", "P005", "風邪薬", 800), _
Array(8, "小林スポーツ用品", "スポーツ用品", "S019", "バスケットボール", 2500), _
Array(9, "鈴木書店", "書籍", "B006", "小説「夏目漱石」", 1200), _
Array(10, "高橋家具", "家具", "F055", "ベッド", 35000))
' 行数を取得
Dim numRows As Long
numRows = InputBox("何行の売上表を生成しますか?", "行数の入力")
' ヘッダー行を作成
Range("A1").Value = "日付"
Range("B1").Value = "企業名"
Range("C1").Value = "商品部門"
Range("D1").Value = "商品コード"
Range("E1").Value = "商品名"
Range("F1").Value = "単価"
Range("G1").Value = "数量"
Range("H1").Value = "売上金額"
' ランダムな日付の範囲を指定
Dim startDate As Date
startDate = DateSerial(2023, 1, 1)
Dim endDate As Date
endDate = DateSerial(2023, 12, 31)
' データ行を生成
Dim i As Long
For i = 1 To numRows
' ランダムな日付を生成
Dim randomDate As Date
randomDate = Int((endDate - startDate + 1) * Rnd + startDate)
' 企業名、商品部門、商品コード、商品名、単価をランダムに選択
Dim randomIndex As Long
randomIndex = Int((UBound(masterData) - LBound(masterData) + 1) * Rnd + LBound(masterData))
Dim company As String
company = masterData(randomIndex)(1)
Dim department As String
department = masterData(randomIndex)(2)
Dim productCode As String
productCode = masterData(randomIndex)(3)
Dim productName As String
productName = masterData(randomIndex)(4)
Dim unitPrice As Long
unitPrice = masterData(randomIndex)(5)
' 数量をランダムに生成
Dim quantity As Long
quantity = Int((10 - 1 + 1) * Rnd + 1)
' 売上金額を計算
Dim salesAmount As Long
salesAmount = unitPrice * quantity
' データを出力
Range("A" & i + 1).Value = Format(randomDate, "yyyy/mm/dd")
Range("B" & i + 1).Value = company
Range("C" & i + 1).Value = department
Range("D" & i + 1).Value = productCode
Range("E" & i + 1).Value = productName
Range("F" & i + 1).Value = unitPrice
Range("G" & i + 1).Value = quantity
Range("H" & i + 1).Value = salesAmount
Next i
' ピボットテーブルを作成
Dim rangeData As Range
Set rangeData = Sheets("Sheet1").Range("A1").CurrentRegion
Dim pivotSheet As Worksheet
Set pivotSheet = ThisWorkbook.Sheets.Add
pivotSheet.Name = "売上集計"
Dim pivotTable As pivotTable
Set pivotTable = pivotSheet.PivotTables.Add(PivotCache:=ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=rangeData), TableDestination:=pivotSheet.Range("A3"), TableName:="売上集計")
pivotTable.PivotFields("商品部門").Orientation = xlRowField
pivotTable.PivotFields("商品部門").Position = 1
pivotTable.PivotFields("商品名").Orientation = xlRowField
pivotTable.PivotFields("商品名").Position = 2
pivotTable.PivotFields("日付").Orientation = xlColumnField
pivotTable.PivotFields("日付").Position = 1
pivotTable.AddDataField pivotTable.PivotFields("売上金額"), "売上金額の合計", xlSum
' ピボットテーブルからグラフを作成
Dim chartSheet As Worksheet
Set chartSheet = ThisWorkbook.Sheets.Add
chartSheet.Name = "売上グラフ"
Dim chartObj As ChartObject
Set chartObj = chartSheet.ChartObjects.Add(0, 0, 500, 300)
chartObj.Chart.SetSourceData Source:=pivotTable.TableRange1
chartObj.Chart.ChartType = xlColumnClustered
chartObj.Chart.HasTitle = True
chartObj.Chart.ChartTitle.Text = "商品部門別の売上"
chartObj.Chart.HasLegend = False
End Sub
5️⃣ さいごに
- 最後までご覧いただきありがとうございました!
Notion AI
では、VBAコードの生成だけでなく、コードリーディングの際の理解の手助けやコードの改善にも活用することが出来ます!- この動画がためになった、参考になったという方はぜひチャンネル登録、Goodボタンを押していただけると今後の動画投稿の励みになります。
- またTwitterでもVBA、Pythonに関するアウトプットをしていますので、フォローいただけますと幸いです。