プロが教える店舗&オフィスのセキュリティ対策術

Excelで見積書のフォーマットを作成しています。
顧客数が非常に多く、正しい顧客名が入力できるように、そして選択しやすいように
データの入力規則のリストを活用しておりましたが、
顧客数が多いのでリストが小さく、選びづらくなってしまい、違い方法を探しています。

Excelの関数またはVBAなどで、オートコンプリート機能のように、いくつか文字を入力すると、
指定のリスト一覧の中から候補がいくつか出てきて、いずれかを選択すると、そのセルに入力できる。
というようなことができないでしょうか。
ご教示願います。

A 回答 (3件)

それよりも、テンプレートを作成したらいかが。

それとオートフィル機能も。
    • good
    • 0
この回答へのお礼

お礼が遅くなり申し訳ございません。
貴重なご意見ありがとうございました。

お礼日時:2017/05/29 10:48

このご質問をしばらく考えて昔も挑戦したことがあったことですが、失敗しましたが、技術が上がった今もうまく行きませんでした。


入力規則の出て来るものをコントロールすることは可能だと言えば可能なのですが、タイミングが悪いのです。

逆に、オートコンプリートを人為的に出てくるものを替えるということと考えました。次に何を出すかは、ユーザーの文字入力に依存しています。ユーザーに何秒でも待たせればもう失敗です。

ある程度までは可能なのですが、入力してすぐに素早い対応を示せないと思うのです。Excelが本体でやっているオートコンプリートを、ユーザーアドインやマクロで出すワザというのは、やったことはあります。でも、それ以降挑戦したことがありません。

そこで、便宜的ですが、IME のユーザー辞書を利用したらどうでしょうか。
今でも変わらないのなら、ユーザー辞書そのものは、Text で管理出来たと思います。

https://121ware.com/qasearch/1007/app/servlet/re …
    • good
    • 0
この回答へのお礼

お礼が遅くなり申し訳ございません。
貴重なご意見ありがとうございます。
複数のパソコンで使用するファイルに活用したいと思っていたものでして。
ユーザー辞書は個別で登録されていることも多いので、共有できるかどうかが懸念課題かと感じました。

お礼日時:2017/05/29 11:03

こんなのはどうでしょう。


添付画像のように、A列に顧客名を並べます。
下記のマクロをSheetモジュールに張り付けます。
B1セルに、顧客名の一部を入力します。
すると・・・。
入力した情報で顧客名が一意になる場合は、その顧客名で決定されます。
一意にならない場合は、顧客名のリストが表示され、選択することができるようになります。

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$1" Then Exit Sub
If Target.Value = "" Then Exit Sub
Dim i As Long
Dim a As String
Dim s As String
Dim h As Long
For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
If Cells(i, "A").Value Like "*" & Target.Value & "*" Then
h = h + 1
a = a & s & Cells(i, "A").Value
s = ","
End If
Next i
If h = 1 Then
Application.EnableEvents = False
Target.Value = a
Application.EnableEvents = True
Exit Sub
End If
If h = 0 Then a = "該当する顧客名が存在しません!!"
With Target.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertInformation, _
Operator:=xlBetween, Formula1:=a
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.IMEMode = xlIMEModeNoControl
.ShowInput = True
.ShowError = False
End With
Target.Select
SendKeys "%{DOWN}"
End Sub
「Excel オートコンプリート機能を応用」の回答画像3
    • good
    • 2
この回答へのお礼

お礼が遅くなり申し訳ございません。
貴重なご意見ありがとうございます。
マクロ等の知識が乏しく、アドバイス頂いたことをなかなか
活用できていないのが現状ですが、なんとかやってみたいと思います。
ありがとうございました。
細やかな例を示してくださったので、ベストアンサーに選ばせて頂きます。

お礼日時:2017/05/29 11:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!