Copilotでクロス表を縦持ちデータに変換|実務仕上げ編

前回コードは「動く」けど「仕事では使いにくい」

前回は、CopilotにVBAを書かせて
クロス表 → 縦持ちデータ変換までは完成しました。

ただし、ここで止めると実務では正直使いづらいです。

理由はシンプルで、

・年月の表示がバラバラ
・数値が見づらい
・列幅がガタガタ

つまり、「見た目」と「使いやすさ」が足りません。

実務ではここがかなり重要です。

今回はここを一発で仕上げます。

前回に引き続き、経済産業省の公開データである「第3次産業活動指数【月次】業種別原指数」のデータを使わせていただいています。

今回やる修正内容(実務仕様)

修正内容はあえてシンプルにしています。

・変数名を分かりやすくする
・年月を yyyy/m 形式にする
・原指数をカンマ区切りにする
・列幅を自動調整する

この4つを入れるだけで、「実務で使える形」になります。

Copilotでクロス表を縦持ちデータに変換|実務仕上げ編

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

Copilotでクロス表を縦持ちデータに変換|実務仕上げ編

■■■スポンサーリンク■■■

実際の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でクロス表を縦持ちデータに変換|実務仕上げ編

■■■スポンサーリンク■■■