現在VLOOKUPの関数などを使用しているのですが、VLOOKUPの関数を少し変更した関数を作成したいと考えています。
作成したい関数なのですが、VLOOKUPZと自分で名前をつけてみました。
詳細ですが以下になります。
http://oskuni7.sakura.ne.jp/hatena//question15/question15.htm
ポイントは
セル内のデータを検索範囲から照合して、照合したデータがあった場合検索範囲のデータの値と設定をそのまま出力するということです。(最悪書式は反映されなくても大丈夫です)
上記のような関数を時間があるかたで作成していただけるかたおりましたら作成していただけないでしょうか?
お手数をおかけしますがどうぞよろしくお願いいたします。
それっぽい物はできました。
ただし、第4引数がTRUEのときの処理がいまいちよくわからなかったので省略しました。
Function VLOOKUPZ(r1 As Range, r2 As Range, i As Integer) As String Dim rs As Range Dim j As Integer Dim r As Range Dim s As String If r2.Columns.Count >= i Then Set rs = Range(Cells(r2.Row, r2.Column + i - 1), Cells(r2.Row + r2.Rows.Count - 1, r2.Column + i - 1)) For Each r In rs If InStr(1, r1.Value, r.Value) > 0 Then s = r.Value Exit For End If Next End If VLOOKUPZ = s End Function
それっぽい物はできました。
ただし、第4引数がTRUEのときの処理がいまいちよくわからなかったので省略しました。
Function VLOOKUPZ(r1 As Range, r2 As Range, i As Integer) As String Dim rs As Range Dim j As Integer Dim r As Range Dim s As String If r2.Columns.Count >= i Then Set rs = Range(Cells(r2.Row, r2.Column + i - 1), Cells(r2.Row + r2.Rows.Count - 1, r2.Column + i - 1)) For Each r In rs If InStr(1, r1.Value, r.Value) > 0 Then s = r.Value Exit For End If Next End If VLOOKUPZ = s End Function
ご回答ありがとうございます。
プログラムを実行してみたのですが
#NAME?
というエラーが発生してしまいます。
計算式ですが
=vlookupz(A3,$E$3:$F$10,1,false)
で入力してみました。
文字数が多い方を優先されるようにしてみました。
例えば「ああえ 魚サカナ 肉ニク 野菜ヤサイ ささ」の場合
文字群に「ああ」と「ああえ」があれば、「ああえ」になります。
ただし、「ああえ 魚サカナ 肉ニああおク 野菜ヤサイ ささ」の場合
文字群に「ああえ」と「ああお」がある場合はどちらか(下の方)になります。
ループが増えてますので処理が少し重くなっているかもしれません。
Function VLOOKUPZ(r1 As Range, r2 As Range, i As Integer) As String Dim rs As Range Dim j As Integer Dim r As Range Dim s As String Dim k As Integer Dim myCount As Integer k = 0 myCount = 0 If r2.Columns.Count >= i Then Set rs = Range(Cells(r2.Row, r2.Column + i - 1), Cells(r2.Row + r2.Rows.Count - 1, r2.Column + i - 1)) While myCount < r2.Rows.Count For Each r In rs If Len(r.Value) = k Then If InStr(1, r1.Value, r.Value) > 0 Then s = r.Value End If myCount = myCount + 1 End If Next k = k + 1 Wend End If VLOOKUPZ = s End Function
ご回答ありがとうございます。
プログラム実行されました。
とてもいいものができましたありがとうございます。
ご回答ありがとうございます。
プログラムを実行してみたのですが
#NAME?
というエラーが発生してしまいます。
計算式ですが
=vlookupz(A3,$E$3:$F$10,1,false)
で入力してみました。