目次
前回コードは「動く」けど「仕事では使いにくい」
前回は、CopilotにVBAを書かせて
クロス表 → 縦持ちデータ変換までは完成しました。
ただし、ここで止めると実務では正直使いづらいです。
理由はシンプルで、
・年月の表示がバラバラ
・数値が見づらい
・列幅がガタガタ
つまり、「見た目」と「使いやすさ」が足りません。
実務ではここがかなり重要です。
今回はここを一発で仕上げます。
前回に引き続き、経済産業省の公開データである「第3次産業活動指数【月次】業種別原指数」のデータを使わせていただいています。
今回やる修正内容(実務仕様)
修正内容はあえてシンプルにしています。
・変数名を分かりやすくする
・年月を yyyy/m 形式にする
・原指数をカンマ区切りにする
・列幅を自動調整する
この4つを入れるだけで、「実務で使える形」になります。

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

実際のCopilotとのやり取り
利用者 → Copilot
先ほどのコードを実務で使いやすいように修正してください。 ■修正内容
・変数名を意味が分かる名前に変更
・data2シートのC列(年月)を yyyy/m 形式に設定
・data2シートのD列(原指数)をカンマ区切りにする
・data2シートの列幅を自動調整 コード全体を修正して提示してください。
Copilot → 利用者
ご要望の修正内容を反映した、実務向けのコードを以下に提示します。
Option Explicit
Sub ConvertCrossToLong()
'--------------------------------------------
'【1】シートの定義
'--------------------------------------------
Dim wsSource As Worksheet ' 元データ:data シート
Dim wsOutput As Worksheet ' 出力先:data2 シート
Set wsSource = Worksheets("data")
Set wsOutput = Worksheets("data2")
'--------------------------------------------
'【2】出力先シートの初期化
'--------------------------------------------
wsOutput.Cells.ClearContents
'--------------------------------------------
'【3】出力先のヘッダー設定
'--------------------------------------------
wsOutput.Range("A1").Value = "品目番号"
wsOutput.Range("B1").Value = "品目名称"
wsOutput.Range("C1").Value = "年月"
wsOutput.Range("D1").Value = "原指数"
'--------------------------------------------
'【4】元データの最終行・最終列を取得
'--------------------------------------------
Dim lastDataRow As Long
Dim lastDataCol As Long
lastDataRow = wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row
lastDataCol = wsSource.Cells(1, wsSource.Columns.Count).End(xlToLeft).Column
'--------------------------------------------
'【5】ループ用の変数定義
'--------------------------------------------
Dim rowIndex As Long ' 行ループ(品目)
Dim colIndex As Long ' 列ループ(年月)
Dim outputRow As Long ' 出力行番号
Dim itemCode As String ' 品目番号
Dim itemName As String ' 品目名称
Dim yearMonth As Variant ' 年月(元データ)
outputRow = 2 ' 出力開始行(2行目)
'--------------------------------------------
'【6】クロス表 → 縦持ちデータへ展開
'--------------------------------------------
For rowIndex = 2 To lastDataRow
itemCode = wsSource.Cells(rowIndex, 1).Value
itemName = wsSource.Cells(rowIndex, 2).Value
For colIndex = 3 To lastDataCol
yearMonth = wsSource.Cells(1, colIndex).Value ' 年月(1行目)
' 出力
wsOutput.Cells(outputRow, 1).Value = itemCode
wsOutput.Cells(outputRow, 2).Value = itemName
' 年月を yyyy/m 形式に統一
If IsDate(yearMonth) Then
wsOutput.Cells(outputRow, 3).Value = Format(yearMonth, "yyyy/m")
Else
wsOutput.Cells(outputRow, 3).Value = yearMonth
End If
' 原指数(数値)をカンマ区切りに設定
wsOutput.Cells(outputRow, 4).Value = wsSource.Cells(rowIndex, colIndex).Value
wsOutput.Cells(outputRow, 4).NumberFormatLocal = "#,##0"
outputRow = outputRow + 1
Next colIndex
Next rowIndex
'--------------------------------------------
'【7】列幅を自動調整
'--------------------------------------------
wsOutput.Columns.AutoFit
'--------------------------------------------
'【8】処理完了メッセージ
'--------------------------------------------
MsgBox "クロス表の縦持ち変換が完了しました。", vbInformation
End Sub
この修正で何が変わったのか
ここが一番重要です。
単に「見た目を整えただけ」と思うと損します。
実際には業務効率がかなり変わります。
年月のフォーマット統一
yyyy/m にすることで
・並び替えが崩れない
・Power BIやCSV連携で扱いやすい
という効果があります。
数値のカンマ区切り
これは見やすさだけでなく、
・資料としてそのまま使える
・確認ミスが減る
という実務的なメリットがあります。
列幅の自動調整
地味ですがかなり重要です。
・毎回手で広げる必要がない
・共有時に崩れない
この「小さなストレス削減」が効いてきます。
なぜ修正は1回で済んだのか
今回、修正は1回で終わっています。
これは偶然ではなく、理由があります。
それは「修正内容を具体的に指示しているから」です。
例えばNGな指示はこうです。
・見やすくして
・いい感じにして
これだとAIは迷います。
一方、今回のように
・yyyy/m
・#,##0
・AutoFit
と具体的に指定すると、一発で通ります。
ここがCopilotを実務で使う最大のコツです。
まとめ
今回の内容で、クロス表変換は「実務レベル」で完成しました。
ただ変換するだけではなく、
・そのまま使える
・そのまま共有できる
・そのまま分析に回せる
ここまで持っていくのが重要です。
Copilotはコードを作るだけのツールではなく、
「業務の仕上げ」まで一緒にやらせることで価値が出ます。
特に今回のように、
変換 → 整形 → 出力
までを一気にやらせると、手作業の工程がほぼゼロになります。
最初は少し手直しが必要でも、一度完成させてしまえば何度でも使えます。
これが「AIを使った業務効率化」の本質です。
次にやるべきことはシンプルです。
自分の業務の中で、「同じことを何度もやっている作業」を見つけてください。
それをCopilotに渡すだけで、同じように自動化できます。
そこから一気に仕事のやり方が変わります。
次回、さらにこのコードを進化させます。
リンク
ChatGPTでExcel VBAマクロを自動生成してみた|初心者でも使える実践手順
Excel VBAのエラー修正をChatGPTに頼んだら原因が一発で分かった話
仕様が曖昧でもOK?ChatGPTにExcel VBAを作らせてみた結果
ChatGPTに作らせたExcel VBAコードは安全?使う前に確認すべきポイント
Excel VBA初心者がChatGPTを使うと挫折しにくくなる理由
CopilotでExcel作業はどこまで効率化できる?実務で使ってみた結果
Copilotに仕事を任せてみた|メール・資料作成はここまで楽になる
Copilotが向いている人・向いていない人を実体験から整理してみた
ChatGPT・Copilot・Geminiに同じ仕事を頼んだら結果が全然違った
結局どれを使えばいい?目的別に生成AIを整理してみた【初心者向け】
初心者が最初にやるべき生成AI活用① ChatGPTで「長文を理解・整理する」読むのがしんどい人ほど効果が出る使い方
初心者が最初にやるべき生成AI活用②ChatGPTに「分からないことをそのまま相談する」使い方・聞き方を気にしない安心感
初心者が最初にやるべき生成AI活用③AIを「自分専用の調べ物係」にする使い方|検索に疲れた人ほど効果が出る
ChatGPTにブログ記事を“赤ペン先生”してもらったら修正力がすごかった話―書くのが苦手な人ほど使ってほしい文章改善―
CopilotでExcel作業手順書を一瞬で作る|引き継ぎ資料が秒で完成した話
Geminiでアイデアが枯れたときの発想復活法|何も思いつかないを脱出する使い方
ChatGPT・Copilot・Geminiをブレスト役で使い分ける実例|発想が加速した方法
CopilotでExcel集計→Word報告書を一気に作る実務フロー― 月次報告が“考えずに終わる”ようになった話 ―
Copilotで会議議事録からToDo管理まで一気にやってみた実務フロー
Geminiで社内資料の画像を作ってみた|伝わらない資料が一瞬で変わった話
ChatGPTに流行りの「今まで私があなたをどう扱ってきたかを画像にして」を頼んでみた
ChatGPTのプロンプトを“自分用”に進化させる方法|頼み方で結果が激変する理由
初心者が最初にやりがちなプロンプトの失敗例と直し方
ChatGPTが急に賢くなる「前提条件」の渡し方-同じ質問なのに答えが変わるのはなぜ?-
プロンプトを毎回書かなくてよくなる“会話の残し方”
ChatGPTに「察してもらえない」と感じた時の原因と対処法|噛み合わない理由を実例で解説
AIに雑に投げても失敗しにくくなる頼み方のコツ|考えずに使っても噛み合う方法
プロンプトが思いつかない人のための“最初の一文”テンプレ集
ChatGPTを“相棒化”する人と、うまく使えない人の決定的な差
生成AIはどこまで使っていい?初心者が最初に知るべき法律の話
AI画像生成は違法?著作権で“やってはいけないこと”実例集
商用利用OK?NG?生成AIの利用規約を初心者向けに噛み砕く
AIで作った文章は誰のもの?著作権の考え方をやさしく解説
「知らなかった」では済まない?生成AIトラブル事例と回避法
ブログ・SNSでAI生成物を使うときの最低限の注意点まとめ
AIに頼りすぎて思考力が落ちた話|便利さの裏で起きたリアル失敗
AIの回答を信じて怒られた話|正しいはずが通用しなかった理由
ChatGPTにExcelマクロを直してもらったらコメントが消えた話|親切の落とし穴
Copilotの差分コードが分からなかった話|全コード出してもらう選択
ChatGPTにきれいな文章はいらなかった話|ぐちゃぐちゃでも伝わる
ChatGPTは仕事に使うだけじゃない|高校生の恋愛LINEをChatGPTに相談したら既読スルーが減った話
ChatGPTは仕事に使うだけじゃない|バツイチ48歳のマッチングアプリ不安を解消した相談実例
ChatGPTは仕事に使うだけじゃない|社内不倫の相談を法と気持ちで整理した話
ChatGPTは仕事に使うだけじゃない|離婚前に確認すべきことを全部整理してくれた話
ChatGPTは仕事に使うだけじゃない|夫が不倫しているかも…調べ方を相談してみた話
ChatGPTは仕事に使うだけじゃない|高校生の反抗期の息子への声かけを相談してみた話
ChatGPTは仕事に使うだけじゃない|大阪のマンションごみトラブルを理事会で相談した話
ChatGPTは仕事に使うだけじゃない|社内報の“ビックリマン風・ジブリ風”画像を作った話
ChatGPTは仕事に使うだけじゃない|ママ友ランチ角が立たず断れた話
ChatGPTは仕事に使うだけじゃない|会話ゼロ夫婦が再出発できた話
ChatGPTは仕事に使うだけじゃない|派遣切り50代女性の次の仕事を相談した話
ChatGPTは仕事に使うだけじゃない|これから役立つ資格をAIに本気で相談してみた話
ChatGPTは仕事に使うだけじゃない|親の介護が不安で今から準備を聞いた話
ChatGPTは仕事に使うだけじゃない|PTA役員を角が立たず断れた話
ChatGPTは仕事に使うだけじゃない|義母との距離感がしんどい悩みを整理してもらった話
ChatGPTは仕事に使うだけじゃない|家計が苦しい時に大阪市で使える制度を年齢別に聞いた話
ChatGPTは仕事に使うだけじゃない|子どものスマホルールを一緒に作ってみた話
ChatGPTは仕事に使うだけじゃない|推し活にお金を使いすぎる悩みを整理してもらった話
ChatGPTは仕事に使うだけじゃない|人間関係がしんどくて距離を置きたい時の相談実例
ChatGPTは仕事に使うだけじゃない|将来が不安で眠れない50歳手前女性の相談を整理してもらった話
Copilotでクロス表を縦持ちデータに変換|実務VBA作成の流れ
Copilotでクロス表を縦持ちデータに変換|実務仕上げ編