[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ドロップダウンリストをあいまい検索で絞り込みたい』(ジン)
名前を定義したリストをドロップダウンで選択するセルを作りましたが、
リストの選択肢が膨大で探し出すのに苦労しています。
そこで、ドロップダウンリストの選択肢を絞り込む機能があれば知りたいのですが…
例えばドロップする前のセルにリスト内で共通する文字を手打ちして、
あいまい検索の結果で候補を絞り込むといった方法は可能でしょうか。
ご教授いただきたく、宜しくお願い致します。
< 使用 Excel:Excel2013、使用 OS:Windows7 >
私が使っているコードをほとんどそのままアップします。
TextBox1に検索したい文字(mykey)を入力しコマンドボタンをクリックしたらリストボックス の最初の行から最終行までの各行の先頭の文字をチェックし先頭の文字がmykeyと一致したら その行を選択しストップします。 mykeyもリストボックスの文字もコード中で全角大文字に変換して比較しています。
Private Sub CommandButton1_Click()
Dim i As Long
Dim mykey As String
If Me.TextBox1.Value = "" Then Exit Sub
With Me.TextBox1
mykey = StrConv(StrConv(.Value, 4), 1)
For i = 0 To Me.ListBox1.ListCount - 1
If StrConv(StrConv(Me.ListBox1.List(i), 4), 1) Like "*" & StrConv(StrConv(mykey, 4), 1) & "*" Then
If Left(StrConv(StrConv(Me.ListBox1.List(i), 4), 1), Len(mykey)) = mykey Then
Me.ListBox1.ListIndex = i
Exit For
End If
End If
Next i
End With
End Sub
TextBox1に検索したい文字(kensakustr)を入力しコマンドボタンをクリックしたらリストボックス の選択行から最終行までの各行の文字(lbstr)をチェックしlbstrの一部がkensakustrと一致したらその行を選択 しストップします。 kensakustrもlbstrもコード中で全角大文字に変換して比較しています
Private Sub CommandButton2_Click()
Dim kensakustr As String
Dim lbstr As String
Dim i As Integer
Dim kai As Integer
Dim shu As Integer
kensakustr = Me.TextBox1.Value
kensakustr = StrConv(kensakustr, 4)
kensakustr = StrConv(kensakustr, 1)
If kensakustr = "" Then Exit Sub
kai = Me.ListBox1.ListIndex
If kai = Me.ListBox1.ListCount - 1 Then Exit Sub
shu = Me.ListBox1.ListCount - 1
For i = kai + 1 To shu
lbstr = Me.ListBox1.List(i)
lbstr = StrConv(lbstr, 4)
lbstr = StrConv(lbstr, 1)
If lbstr Like "*" & kensakustr & "*" Then
Me.ListBox1.ListIndex = i
Exit For
End If
Next i
End Sub
(カリーニン) 2014/05/09(金) 10:10
よく見たら名前の定義のドロップダウンリストのことでしたね。 私のコードはリストボックスの場合ですのでスルーしてください。 (カリーニン) 2014/05/09(金) 10:14
どういったリストをつくられているのかわからないのでうまくいくか保証できませんが・・・ 頭の文字だけで絞り込む方法です。
まず、リストに対してのフリガナ列を作成します。 PHONETIC関数で出してもいいですが、例えば会社名とかだと株式会社あさひで「か」から検索する ということはないと思いますので検索したいフリガナで作成します。 そしてフリガナの昇順でリストを並べ替えます。
例としてA1に名前B1にフリガナとしたリストを作成したとして、D1に入力規則でリストを設定したとします。
まず、B1からフリガナが入っている範囲まで名前定義の選択範囲から作成→上端にチェック これでB列にフリガナという名前がつきます。 そして、「A1セル」に「名簿」という名前をつけます。
次にD1に入力規則でリストを設定し、元の値に「=OFFSET(名簿,MATCH(D1&"*",フリガナ,0),,COUNTIF(フリガナ,D1&"*"))」 と式を入れます。 そして、エラーメッセージタブの「無効なデータが入力されたらエラーメッセージを表示する」の チェックを外します。
これで、D1にカタカナで頭の文字を1文字入れてから▼を押すと絞り込まれたリストが出てくると思います。 全角半角などにご注意ください。 (コナミ) 2014/05/09(金) 12:06
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.