0

以下のコードを修正したい

検索したいテキストのリストを含む範囲 ("a1:20") からテキストを選択するための findwhat が必要です

Bの説明にテキストが見つかった場合、見つかったテキストを返したい.たとえば、説明の横にある jo IN range c

ありがとう

Option Explicit

Sub x()
    Dim FindWhat, rngCell As Range, i As Integer

    FindWhat = Array("Jo", "oa", "of", "koo")
    For i = 0 To 3
        For Each rngCell In Range("B2", Range("B" & Rows.Count).End(xlUp))
            If InStr(rngCell, FindWhat(i)) <> 0 Then
                rngCell.Offset(0, 1) = rngCell
                rngCell.Offset(, 1).Resize(, 2).Copy
            End If
        Next rngCell
    Next i

End Sub   
4

1 に答える 1

1

これを試して:

Option Explicit

Sub x()
    Dim findRng As Range, _
        targetRng As Range, _
        findCell As Range, _
        found As Range
    Dim i As Integer
    Dim firstFound As String, _
        columnName As String

    columnName = "B"
    Set findRng = Range("A1:A20")
    For Each findCell In findRng
        Set targetRng = Range(columnName & "2", Range(columnName & Rows.Count).End(xlUp))
        With targetRng
            Set found = .Find(findCell.Value, LookIn:=xlValues, lookat:=xlPart)
            If Not found Is Nothing Then
                firstFound = found.Address
                Do
                    found.Offset(0, 1).Value = found.Offset(0, 1).Value & findCell.Value & ", "
                    Set found = .FindNext(found)
                Loop While Not found Is Nothing And found.Address <> firstFound
            End If
        End With
    Next findCell

End Sub

実行していることがこれよりも少し複雑でない限り、セルの数式を使用してこの結果を得ることができることに注意してください。これを実現する方法については、Index、Match、および VLookup 関数のヘルプを参照してください。

于 2012-09-05T20:07:33.077 に答える