目次
今回の業務内容と課題
今回のテーマは
データのユニーク化 + フォーム連携
です。
扱うデータは、経済産業省の公開データ「生産動態統計年報(2024年)」です。
データベースとして使う場合、同じ項目名が何度も出てくることはよくあります。
例えばこんな状態です。
・同じ項目名が何行も存在
・フィルタや検索がしづらい
・フォームに使うと重複だらけになる
このままでは、リストボックスが使いづらい という問題が発生します。
そこで今回は
項目名をユニーク化して、フォームのリストボックスに設定する
という処理を、Copilotに作らせます。
今回やること
今回はあえて最小構成にしています。
・dataシートのE列(項目名)を取得
・重複を除いたリストを作る
・UserForm1 の ListBox1 にセットする
この3つだけです。
この段階で一度「動くもの」を作ります。
次回以降で実務レベルに進化させていきます。

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

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

実際のCopilotとのやり取り
利用者 → Copilot
Excel VBAで、データベースの項目名をユニーク化して フォームのリストボックスに設定する処理を作成してください。 ■元データ(dataシート)
・E列:項目名
・対象:2行目~最終行
・最終行はA列を基準に取得 ■出力先
・UserForm1 の ListBox1 ■要件
・E列の項目名を重複なしで取得
・ListBox1に一覧として設定
・空白は除外 可読性を重視し、コメント付きでコードを作成してください。
Copilot → 利用者
以下に、ご要望の条件を満たすExcel VBAコードを提示します。
Option Explicit
'---------------------------------------------
' dataシートのE列から項目名をユニーク抽出し、
' UserForm1 の ListBox1 に設定する処理
'---------------------------------------------
Public Sub LoadUniqueItemsToListBox()
Dim ws As Worksheet
Dim lastRow As Long
Dim dict As Object
Dim i As Long
Dim value As String
Dim arr As Variant
' dataシートを取得
Set ws = ThisWorkbook.Worksheets("data")
' A列を基準に最終行を取得
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' Dictionary(重複排除用)を作成
Set dict = CreateObject("Scripting.Dictionary")
'---------------------------------------------
' E列(2行目~最終行)を走査してユニーク化
'---------------------------------------------
For i = 2 To lastRow
value = Trim(ws.Cells(i, "E").value)
' 空白は除外
If value <> "" Then
' Dictionary に存在しなければ追加
If Not dict.Exists(value) Then
dict.Add value, True
End If
End If
Next i
'---------------------------------------------
' UserForm1.ListBox1 に設定
'---------------------------------------------
With UserForm1.ListBox1
.Clear ' 既存の項目をクリア
If dict.Count > 0 Then
arr = dict.Keys ' キー(ユニーク項目名)を配列として取得
.List = arr ' ListBox に一括設定
End If
End With
End Sub
UserForm 起動時に自動で読み込みたい場合は、 UserForm1.Initialize イベントに以下を追加してください。 Private Sub UserForm_Initialize() LoadUniqueItemsToListBox End Sub
このコードでやっていること
ここが一番重要です。
初心者の方でも理解できるように、順番に説明します。
Dictionaryでユニーク化
今回のキモはここです。
Dictionaryという仕組みを使っています。
これは
同じキーを登録できない
という特徴があります。
つまり
重複が自動で消える
ということです。
今回の処理はシンプルです。
・項目名を1つずつ読み込む
・Dictionaryに入れる
・同じものは無視される
これだけでユニーク化が完成します。
重複しないユニークなリスト作成 ~Dictionaryオブジェクト(連想配列)を使う1~ (Excel VBA)
重複しないユニークなリスト作成 ~Dictionaryオブジェクト(連想配列)を使う2~ (Excel VBA)
ListBoxへの設定
ListBoxは少しクセがあります。
普通に1件ずつ追加する方法もありますが、今回は違います。
この1行で、配列を一括設定しています。
これが一番シンプルで速い方法です。
リストボックスに重複しないユニークな値リスト(1列)を設定する(Excel VBA)
リストボックスに重複しないユニークな値リスト(複数2列)を設定する(Excel VBA)
リストボックスに重複しないユニークな値リスト(複数列 3列以上)を設定する(Excel VBA)
実務でのポイント
今回のコードはシンプルですが、実務ではかなり使います。
例えば
・検索条件のプルダウン
・分類ごとの絞り込み
・入力補助
などです。
特に重要なのは
「元データをそのまま使っている」
という点です。
別シートに加工しなくても、その場でユニーク化できるのが強みです。
なぜ1回で完成したのか
今回も修正なしで完成しています。
理由はシンプルです。
指示が具体的だからです。
・E列
・2行目から
・A列で最終行
・ListBox1
ここまで明確に指定すると、Copilotは迷いません。
逆に
・いい感じにリスト作って
こういう指示だとズレます。
この差がそのまま精度の差になります。
まとめ
今回は、データのユニーク化 → フォーム表示 という処理を、Copilotで一発作成しました。
やっていること自体はシンプルですが、実務ではかなり頻出のパターンです。
特に今回のポイントは
・Dictionaryで重複排除
・ListBoxへ一括設定
・元データをそのまま活用
この3つです。
これができるようになると、「入力フォームを作る」レベルまで一気にステップアップできます。
そして重要なのは、自分で書いていない という点です。
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でクロス表を縦持ちデータに変換|実務仕上げ編
Copilotでクロス表を縦持ちデータに変換|配列で高速化する
Copilotでクロス表を縦持ちデータに変換|項目変更に強い構造へ
Copilotでリストボックスにユニーク値を設定|実務VBA