2016-05-20 2 views
0

私はシート1の列Aとシート2の各行の列Aの文で一意の単語のリストを持っています。Excelは選択したセルの値に一致するすべての値を表示します

私は

_a____ means the cell containing "a" is selected 

Col A | Col B | Col C 
_a____|  | A lovely house 
this |  | Throw a ball 

Sheet 2 
Col A 
A lovely house 
Making it rain 
Throw a ball 

だから、単語が一致し、ではない文章を返す必要があり、現在、A列に選択された単語が含まれるすべてのシート1上の文章、列Cを表示したいです大文字と小文字を区別しないでください。

"this"で次のセルを選択すると、C列に "this"という単語を含むすべての文がリストされます。

+0

音がきれいです。あなたは何かを試しましたか?あなたにコードを書く人を探していますか? 'Sheet2!A:A'と' instr() 'が' Range.Find() 'がワイルドカードで動作しない限り、' for'ループが最良のアプローチであると考えています。 – JNevill

答えて

0

これは動作しますが、検索語を含む単語も含めて文を返します。例えば。 「すべて」を検索すると、最後の文が一致します。

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 

Dim strSearch As String, strFirst As String 
Dim rngCell As Range, rngSearch As Range 
Dim lngRow As Long 

On Error Resume Next 

strSearch = Intersect(ActiveSheet.Range("A:A"), Selection(1)).Value 

Set rngSearch = ActiveWorkbook.Worksheets("Sheet2").Range("A:A") 
Set rngCell = rngSearch.Cells.Find(What:=strSearch, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True, SearchFormat:=False) 

lngRow = 1 
If Not rngCell Is Nothing Then 
    strFirst = rngCell.Address 
    Do 
     ActiveSheet.Range("C" & lngRow).Value = rngCell.Value 
     lngRow = lngRow + 1 
     Set rngCell = rngSearch.FindNext(after:=rngCell) 
    Loop Until rngCell.Address = strFirst 
End If 

最後に「End Sub」を忘れないでください。なんらかの理由で私はこのコードスニペットの一部にすることはできません。

BTW:上記の問題も解決したい場合は、REGEXPを使用する必要があります。

関連する問題