Как выбрать ячейки в столбце, которые имеют определенный текст в своем значении - PullRequest
0 голосов
/ 19 декабря 2018

Я пытаюсь получить ячейки, которые соответствуют определенным текстовым критериям, которые я ищу.

Я получаю сообщение об ошибке

Ошибка времени выполнения 424 Требуется объект

в строке 12

cell = Sheets("Sheet1").Range("A" & row_num)

и я не уверен, почему?

Любая и вся помощь в этом будет принята с благодарностью!

Option Compare Text

Sub FindingColumn()
Dim Col1Rng As Range, Col3Rng As Range
Dim Column1Search As String, Column2Search As String, Column3Search As 
String
row_num = 0

Column1Search = InputBox("Col 1 Criteria: ")

Do
DoEvents
row_num = row_num + 1
cell = Sheets("Sheet1").Range("A" & row_num)
    If Col2Rng = Empty And InStr(cell, Column1Search) Then
        Col2Rng = cell.Address(0, 0)
    ElseIf InStr(cell, Column1Search) Then
        Col2Rng = Col2Rng & "," & cell.Address(0, 0)

    End If
Loop Until cell = ""

Range(Col2Rng).Select
End Sub 

1 Ответ

0 голосов
/ 19 декабря 2018

Это должно послужить основой для того, что вы пытаетесь сделать

Sub FindingColumn()
    Dim Col1Rng As Range, Column1Search As String, foundCellCol1 As Range
    Set Col1Rng = ActiveSheet.Range("A:A")
    Column1Search = InputBox("Col 1 Criteria: ")
    Set foundCellCol1 = Col1Rng.Find(What:=Column1Search)
    If Not foundCellCol1 Is Nothing Then foundCellCol1.Select Else: MsgBox "Search term not found!"
End Sub

Можете ли вы создать в другом месте список всех соответствующих элементов?

Option Explicit
Sub FindingColumn()
    Dim Col1Rng As Range, Column1Search As String, foundCellCol1 As Range, lastRow As Long, lastFoundRow As Long
    lastRow = Range("A100000").End(xlUp).Row
    Set Col1Rng = ActiveSheet.Range("A1:A" & lastRow)
    Column1Search = InputBox("Col 1 Criteria: ")
    Set foundCellCol1 = Col1Rng.Find(What:="*" & Column1Search & "*")
    While Not foundCellCol1 Is Nothing
        If Not foundCellCol1 Is Nothing Then
            Range("B" & Range("B100000").End(xlUp).Row + 1) = foundCellCol1.Value
            Set Col1Rng = ActiveSheet.Range("A" & foundCellCol1.Row & ":A" & lastRow)
            lastFoundRow = foundCellCol1.Row
            Set foundCellCol1 = Col1Rng.Find(What:="*" & Column1Search & "*")
            If foundCellCol1.Row = lastFoundRow Then Set foundCellCol1 = Nothing
        End If
        DoEvents
    Wend
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...