Существует ли метод VBA, эквивалентный запросу SQL SELECT? - PullRequest
0 голосов
/ 13 марта 2012

В рабочей таблице Excel я пытаюсь найти строки, соответствующие некоторым критериям в значении их ячеек.

Мне нужно что-то вроде запроса SQL SELECT для продолжения поиска по рабочей таблице Excel, есть ли такой метод вVBA?Метод, который возвращает Range строк, который соответствует критериям поиска.

Я пытался использовать метод Range AutoFilter, но я не могу использовать возвращенный объект в качестве Range для доступа к ячейкам в возвращаемых строках.

Я действительно новичок в Excel VBA, поэтому извините, если мой вопрос выглядит странно или глупо

Ответы [ 2 ]

1 голос
/ 13 марта 2012

Вы можете использовать функцию Union () для создания диапазона. Вот упрощенный пример (скажем, вы хотите выделить целые строки, в которых значение в столбце A было четным числом, и выделите их желтым цветом):

Sub UnionTest()

Dim myRange As Range
Dim cell As Range

For Each cell In Range("A1:A100")
    If cell Mod 2 = 0 Then
        If myRange Is Nothing Then
            Set myRange = cell
        Else
            Set myRange = Union(myRange, cell)
        End If
    End If
Next

myRange.EntireRow.Interior.Color = vbYellow

End Sub

Обратите внимание, что вам нужно проверить, является ли диапазон пустым или нет, прежде чем использовать его для объединения (и раскрасить его, но для облегчения чтения кода, здесь я его опускал), таким образом, в операторе If-Then. В зависимости от того, что вы хотите сделать с каждой строкой, может оказаться более эффективным просто выполнить процесс в строке во время цикла for-each.

0 голосов
/ 13 марта 2012

Посмотрите на эти функции

  • ВПР
  • HLOOKUP - аналогично VLookup, но для строк
  • LOOKUP ()
  • INDEX () и MATCH ()
  • OFFSET () и MATCH ()

Как найти данные в таблице Excel
Как использовать VLOOKUP или HLOOKUP, чтобы найти точное совпадение

Надеюсь, что это поможет

...