Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7800 / 13644 ツリー ←次へ | 前へ→

【36774】検索キーの半角の濁音・半濁音 検索くん 06/4/13(木) 15:01 質問[未読]
【36781】Re:検索キーの半角の濁音・半濁音 Kein 06/4/13(木) 16:22 発言[未読]
【36786】Re:検索キーの半角の濁音・半濁音 検索くん 06/4/13(木) 19:42 質問[未読]
【36790】Re:検索キーの半角の濁音・半濁音 ichinose 06/4/13(木) 22:09 発言[未読]

【36774】検索キーの半角の濁音・半濁音
質問  検索くん  - 06/4/13(木) 15:01 -

引用なし
パスワード
   はじめまして。

実際にできるかどうかはわからないのですが、リスト形式で商品のデータをもっているシートに対して検索をかけるというマクロを作っています。

検索キー(半角カナ)     商品名        金額等
エクセルブイビーエー    エクセルブイビーエー     100円

このようなリストで、検索するときにエクセルブイビーエーでもエクセルフイヒーエーでも検索ができるようにできないかな・・・と思いまして。

ヒントだけでもいただければと思います。
みなさまよろしくお願いします。

【36781】Re:検索キーの半角の濁音・半濁音
発言  Kein  - 06/4/13(木) 16:22 -

引用なし
パスワード
   「編集」「検索」のダイアログで、"全角・半角の区別をする"にチェックが
ついていたら、それを外して検索テストをしてみて下さい。
ちなみにマクロなら、Findメソッドの引数 MatchByte に False を渡すことと
等価になります。

【36786】Re:検索キーの半角の濁音・半濁音
質問  検索くん  - 06/4/13(木) 19:42 -

引用なし
パスワード
   ▼Kein さん:

お返事ありがとうございます。
Keinさんの解答は全角カナと半角カナを区別しない検索方法かと思います。
今考えているのは「゙」「゚」などの半角カナの濁音・半濁音があるなしにかかわらずhitさせたいということなので・・・・。

検索キーワード   「ガスター」「カスター」
検索結果      「ガスターテン」

という感じです。
よろしくお願いします。


>「編集」「検索」のダイアログで、"全角・半角の区別をする"にチェックが
>ついていたら、それを外して検索テストをしてみて下さい。
>ちなみにマクロなら、Findメソッドの引数 MatchByte に False を渡すことと
>等価になります。

【36790】Re:検索キーの半角の濁音・半濁音
発言  ichinose  - 06/4/13(木) 22:09 -

引用なし
パスワード
   こんばんは。

>検索キーワード   「ガスター」「カスター」
>検索結果      「ガスターテン」
>
>という感じです。
>よろしくお願いします。
>
>
>>「編集」「検索」のダイアログで、"全角・半角の区別をする"にチェックが
>>ついていたら、それを外して検索テストをしてみて下さい。
>>ちなみにマクロなら、Findメソッドの引数 MatchByte に False を渡すことと
>>等価になります。

新規ブックの標準モジュールに以下のコードで試してください。
コード内でサンプルデータも作成していますから、真っ白のシートのまま
実行してみて下さい。

'=========================================================
Sub main()
  Dim result As Variant
  Range("a1:a5").Value = _
    Application.Transpose(Array("項目", "ブイビーエー", _
                  "ガスターテン", "フイヒー", "カスターテン"))
  '↑サンプル作成
  MsgBox """カス""で検索----- Go"
  result = searcharray(Range("a2:a5"), "カス")
  For idx = LBound(result) To UBound(result)
    MsgBox result(idx)
    Next
End Sub
'========================================================================
Function searcharray(rng As Range, whatstr As String) As Variant
  Dim myarray As Variant
  myarray = Evaluate("if(Iserror(find(""" & _
            Replace(Replace(whatstr, "゙", ""), "゚", "") & """," & _
            "substitute(substitute(" & rng.Address & ",""゙"",""""),""゚"","""")))," & _
            """" & Chr(&HFF) & """," & rng.Address & ")")
  'if(Iserror(find("カス",substitute(substitute($A$2:$A$5,"゙",""),"゚",""))) _
                              ,"",$A$2:$A$5)
  '例えば↑こんな数式が評価されます
  
  If TypeName(myarray) = "Variant()" Then
    myarray = Application.Transpose(myarray)
  Else
    myarray = Array(myarray)
    End If
  searcharray = Filter(myarray, Chr(&HFF), False)
  Erase myarray
End Function

7800 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free