>簡単な方法ご伝授ください。
簡単な方法でもないですが…
ワークシートの値が変わった時に、実行されるマクロを利用して、リストから該当するものをピックアップして、入力規則のリストに代入するというものです。
リストの位置や入力欄などは、サンプルとして適当に仮定しています。
意味不明の場合は、無視してください。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ListRng As Range, rw As Long, col As Long, i As Integer
Dim reslt As String, num As String, tmp As String
Const comma = ","
Const ListAddr = "A3:B7" '//顧客リストの位置
Const target_column = "D" '//番号入力欄の列
Const target_row = 3 '//番号入力欄の最小行番号
col = Columns(target_column).Column
If Target.Column <> col Or Target.Row < target_row Then Exit Sub
If Target.Text = "" Then Exit Sub
Set ListRng = Range(ListAddr)
num = Right(Target.Text, 4)
result = ""
For rw = 1 To ListRng.Rows.Count
If Right(ListRng.Cells(rw, 2).Text, 4) = num Then
tmp = ListRng.Cells(rw, 1)
Do While InStr(tmp, comma) > 0
i = InStr(tmp, comma)
tmp = Left(tmp, i - 1) & "," & Right(tmp, Len(tmp) - i)
Loop
result = result & comma & tmp
End If
Next rw
If result <> "" Then
With Cells(Target.Row, Target.Column + 1).Validation
.Delete
.Add Type:=xlValidateList, Formula1:=Right(result, Len(result) - 1)
End With
End If
End Sub
お礼
質問の仕方が悪くてお悩ませして申し訳ございません。 1,500件の名簿からなんとか4桁の数字だけで納品書に名前を打ち込みたいともがいてきました。 質問の仕方が良くなくてすみませんでした。