プロが教えるわが家の防犯対策術!

エクセルで、セルに入力する品名(候補)が300個ある中で、
最初の1文字を入力した時点で、
300個の品名から入力した文字に対応した候補を表示させて
入力する方法を、教えてもらえませんでしょうか?

例えば、
セルに入力する品名(候補)が、

オブラート(丸)
オブラート(袋)
絆創膏(L)
絆創膏(M)
絆創膏(S)




と、ある状態で、
「オブラート(袋)」をする時に、
セルに「オ」を入力した時点で、

オブラート(丸)
オブラート(袋)

が表示され、
「オブラート(袋)」
を選択して、セルに入力出来るようしたいです。

オートコンプリートの機能だと、前に入力した物しか表示しませんし
ドロップダウン リストを作成しても、300以上もある候補から選択するのは、
大変な為困っています。
(もちろん、300個以上ある入力候補の中から、
効率よく目的の物を入力する良い方法でも構いません。)

教えていただけると助かります。
以上、よろしくお願いします。

A 回答 (2件)

こんにちは!



一案です。
具体的な配置が判らないので、やり方だけ・・・
↓の画像のように元データ(品名)はD列にあるとします(1行目は項目行)
A列変更があるたびに、A列文字列が含まれるデータをF列に表示させ
入力規則の「リスト」でF列をリスト表示させる方法になります。

まず画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペーストしておき、VBE画面を閉じます)

Dim i As Long, cnt As Long, myStr As String 'この行から//
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A:A")) Is Nothing Or Target.Count > 1 Then Exit Sub
With Target
Range("F:F").ClearContents
cnt = 0
myStr = .Value
For i = 2 To Cells(Rows.Count, "D").End(xlUp).Row
If InStr(Cells(i, "D"), myStr) > 0 Then
cnt = cnt + 1
Cells(cnt, "F") = Cells(i, "D")
End If
Next i
End With
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("A:A")) Is Nothing Or Target.Count > 1 Then Exit Sub
Range("F:F").ClearContents
cnt = 0
For i = 2 To Cells(Rows.Count, "D").End(xlUp).Row
If InStr(Cells(i, "D"), Target) > 0 Then
cnt = cnt + 1
Cells(cnt, "F") = Cells(i, "D")
End If
Next i
End Sub 'この行まで//

そしてA列のリスト表示させたい範囲を範囲指定 → データ → 入力規則 → リスト → 元の値の欄に
=OFFSET(F$1,0,,COUNTA(F:F))
という数式を入れます。
入力規則の画面の「エラーメッセージ」タブ → 「無効なデータが入力されたら・・・」のチェックを外しておきます。

※ おそらく価格や数量の列もあるのでしょうが、
複数列のリスト表示を行うとなると結構厄介です。
まずはこの程度で・・・m(_ _)m
「エクセルで、入力したい品名の最初の文字を」の回答画像2
    • good
    • 2
この回答へのお礼

丁寧な説明と、VBAのコードまでも、
ありがとうございます。
早速、試してみます。

お礼日時:2016/09/18 10:32

・ユーザーフォームを作成してテキストボックスを使うならばVBAで実現出来ますが、セル入力に関してでしたらVBAでもイベントがないので出来ません。


その他、実現しそうなのは、IMEに専用の辞書を作成してそれを使う。
    • good
    • 1
この回答へのお礼

教えてくださってありがとうございます。
IMEを検討してみます。

お礼日時:2016/09/18 10:25

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A