|
こんばんは。
>検索キーワード 「ガスター」「カスター」
>検索結果 「ガスターテン」
>
>という感じです。
>よろしくお願いします。
>
>
>>「編集」「検索」のダイアログで、"全角・半角の区別をする"にチェックが
>>ついていたら、それを外して検索テストをしてみて下さい。
>>ちなみにマクロなら、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
|
|