0

ブックに2枚のExcelシートがあります。

参照表が1枚になっています。セル(文がある)に特定の文字列が存在するかどうかを確認し、参照テーブルでその文字列に対して値を検索して書き込む必要があります。

これが私がやろうとしていることです:(Sheet 1は操作シート、Sheet 2はリファレンスシートです。)

VLOOKUP(FIND{"compare","contrast","x",..},from the sheet 1 column 1),if string exists,the value against that string in sheet 2 column 2 written in sheet 2 column 2)

{"compare","contrast"} are all words in sheet 1 column 1

Sheet 2, Column Aの文字列(文または文字列の配列)と一致する文字列があるかどうかを比較したいと思いSheet 1, Column Aます。次に、それらが一致する場合、の文字列に対する値Sheet 2, Column 2はで生成される必要がありますSheet 1, Column B

このためのマクロの書き方を教えていただけますか?

4

1 に答える 1

3

更新しました:

これが関数です。

2つのパラメータを取ります。1つ目は検索するセル(シート1、A1)で、2つ目は参照テーブルを構成する列(シート2、A:B)です。シート2Aのすべての用語を使用して、それらからさまざまな配列の用語集を作成します。列Aがキーで、Bが値です。セル内で文字列の1つが見つかると、resultという新しい文字列に配置されます。個人的な選択として、グロセイを静的にしたので、この関数を一度に多くのセルで実行した場合に実行が速くなりますが、必要に応じてDimに変更できます。

したがって、A1の場合、次のように記述します。

=FindString(A1,Sheet2!A:B)

これがコードです。試してみてください。お役に立てば幸いです。少なくとも、良いスタートを切ることができます。

Function FindString(ByVal text As String, _
                    ByVal term_list As range) As String

Dim result As String
Dim i As Long
Static glossary As Variant
glossary = range(term_list.Cells(1, 1).End(xlDown), term_list.Cells(1, 2))

For i = 1 To UBound(glossary)
    If InStr(text, glossary(i, 1)) <> 0 Then
       result = (glossary(i, 1) & " = ") & (glossary(i, 2) & vbLf) & result
    End If
Next

If Len(result) <> 0 Then
    result = Left$(result, (Len(result) - 1))
End If

FindString = result

End Function
于 2011-07-05T13:38:14.750 に答える