Excelで簡単にサジェスト機能を作る方法|初心者でもできるマクロ活用術

パソコンパソコン・スマホ教室
スポンサーリンク

Excelを使っていると、長いリストから目的の項目を探すのが大変ですよね。そんなときに便利なのが「サジェスト機能」です。Google検索のように、入力した文字に合わせて候補が表示される機能をExcelでも実現できます。今回は、初心者の方でもわかりやすく、マクロを使ってサジェスト機能を作る方法をご紹介します。

スポンサーリンク

サジェスト機能とは?

Excelのイメージ

Excelのイメージ

サジェスト機能とは、文字を入力する際に、入力内容に基づいて候補を自動的に表示する機能です。例えば、Excelで「山」と入力すると、「山田」「山本」などの候補が表示され、選択することで入力が簡単になります。

マクロを使ってサジェスト機能を実現する方法

Excelでは、VBA(Visual Basic for Applications)というマクロ機能を使って、サジェスト機能を実装できます。以下の手順で設定してみましょう。

マクロ有効のExcelファイルを作成する

まず、Excelを開き、「名前を付けて保存」で「Excelマクロ有効ブック(.xlsm)」として保存します。これでマクロを使用できる状態になります。

VBAエディタを開く

Excelの「開発」タブから「Visual Basic」をクリックして、VBAエディタを開きます。もし「開発」タブが表示されていない場合は、Excelの設定から表示を有効にしてください。

モジュールを挿入する

VBAエディタで「挿入」→「標準モジュール」を選択し、新しいモジュールを追加します。

サジェスト機能のコードを入力する

以下のコードを新しく追加したモジュールにコピー&ペーストします。

vba
Sub 入力候補表示(Sh As String, Rg As String, Tg As Range)
Dim foundCell As Range
Dim strFormula As String
Dim matchKey As String
Dim firstAddress As String
Dim matchWord As String
Dim roopCount As Long

If Tg.Count > 1 Then Exit Sub

matchKey = Tg.Value
Set foundCell = Worksheets(Sh).Range(Rg).Find(matchKey, LookAt:=xlPart)

If foundCell Is Nothing Then Exit Sub

strFormula = ""
roopCount = 0
firstAddress = foundCell.Address
Do
matchWord = foundCell.Value
If InStr(matchWord, matchKey) > 0 Then
strFormula = strFormula & matchWord & ","
End If
roopCount = roopCount + 1
Set foundCell = Worksheets(Sh).Range(Rg).FindNext(foundCell)
Loop While Not foundCell Is Nothing And firstAddress <> foundCell.Address

If Len(strFormula) > 0 Then
Application.EnableEvents = False
Tg.Validation.Delete
Tg.Validation.Add Type:=xlValidateList, Formula1:=strFormula
Tg.Validation.ShowError = False
Application.EnableEvents = True
End If
End Sub

このコードは、指定したシートと範囲から入力内容に一致する候補を探し、入力規則として設定するものです。

シートの変更イベントにコードを追加する

次に、対象となるシートのコードウィンドウに以下のコードを追加します。

vba
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
Call 入力候補表示("辞書", "A", Target)
End If
End Sub

このコードは、シートのA列に入力があった場合に、先ほどのサジェスト機能を呼び出すものです。

辞書となるデータを準備する

「辞書」という名前のシートを作成し、A列に候補となるデータ(例氏名や商品名など)を入力します。このデータがサジェスト機能の候補として使用されます。

動作確認をする

シートに戻り、A列のセルに文字を入力してみてください。入力した文字に一致する候補がドロップダウンリストとして表示されるはずです。

注意点と補足

* この方法では、部分一致で候補を表示します。完全一致を求める場合は、コードを修正する必要があります。
* 入力規則のリストに表示できる文字数には制限があります。大量のデータを扱う場合は、他の方法を検討してください。
* VBAのコードはExcelのバージョンや設定によって動作が異なる場合があります。動作しない場合は、Excelの設定やコードの見直しを行ってください。

よくある質問や疑問

Q1: VBAのコードを入力するのが難しいです。どうすればよいですか?

VBAのコードはコピー&ペーストで簡単に追加できます。手順通りに進めていただければ、初心者の方でも問題なく設定できます。

Q2: サジェスト機能を他の列にも適用できますか?

はい、可能です。コード内の「Target.Column = 1」の部分を変更することで、他の列にも適用できます。

Q3: 入力規則のリストに表示できる項目数に制限はありますか?

はい、入力規則のリストには表示できる項目数に制限があります。大量のデータを扱う場合は、他の方法を検討してください。

今すぐ解決したい!どうしたらいい?

LINE公式

いま、あなたを悩ませているITの問題を解決します!
「エラーメッセージ、フリーズ、接続不良…もうイライラしない!」

あなたはこんな経験はありませんか?

✅ ExcelやWordの使い方がわからない💦
✅ 仕事の締め切り直前にパソコンがフリーズ💦
✅ 家族との大切な写真が突然見られなくなった💦
✅ オンライン会議に参加できずに焦った💦
✅ スマホの重くて重要な連絡ができなかった💦

平均的な人は、こうしたパソコンやスマホ関連の問題で年間73時間(約9日分の働く時間!)を無駄にしています。あなたの大切な時間が今この悩んでいる瞬間も失われています。

LINEでメッセージを送れば即時解決!

すでに多くの方が私の公式LINEからお悩みを解決しています。

最新のAIを使った自動応答機能を活用していますので、24時間いつでも即返信いたします。

誰でも無料で使えますので、安心して使えます。

問題は先のばしにするほど深刻化します。

小さなエラーがデータ消失重大なシステム障害につながることも。解決できずに大切な機会を逃すリスクは、あなたが思う以上に高いのです。

あなたが今困っていて、すぐにでも解決したいのであれば下のボタンをクリックして、LINEからあなたのお困りごとを送って下さい。

相談しに行く

ぜひ、あなたの悩みを私に解決させてください。

まとめ

Excelでサジェスト機能を実現することで、長いリストから目的の項目を簡単に選択できるようになります。VBAを使ったこの方法は、初心者の方でも手順通りに進めれば簡単に設定できます。業務の効率化や入力ミスの防止に役立つので、ぜひ試してみてください。

他にも疑問やお悩み事があればお気軽にLINEからお声掛けください。

コメント

タイトルとURLをコピーしました