[[20140508100137]] 『ドロップダウンリストをあいまい検索で絞り込みた』(ジン) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ドロップダウンリストをあいまい検索で絞り込みたい』(ジン)

名前を定義したリストをドロップダウンで選択するセルを作りましたが、
リストの選択肢が膨大で探し出すのに苦労しています。

そこで、ドロップダウンリストの選択肢を絞り込む機能があれば知りたいのですが…
例えばドロップする前のセルにリスト内で共通する文字を手打ちして、
あいまい検索の結果で候補を絞り込むといった方法は可能でしょうか。

ご教授いただきたく、宜しくお願い致します。

< 使用 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.