Мне нужно извлечь строку данных из таблицы Excel и перенести ее на другой лист. Мне нужно найти ряд тире (- - - - -), а затем извлечь строку данных, которая находится на 2 строки ниже тире.
решение1
Excel Найти Найти синтаксис
Dim rFound As Range
Где «выражение» — это любой допустимый объект диапазона, например Range("A1:A100"), Columns(2) и т. д. Кроме того, объект диапазона возвращается всякий раз, когда мы используем метод Find.
выражение.Find(Что, После, СмотретьВ, СмотретьНа, ПорядокПоиска, НаправлениеПоиска, СопоставлениеРегистра, СопоставлениеБайта, ФорматПоиска)
Dim rFound As Range On Error Возобновить Далее
With ActiveWorkbook.ActiveSheet
Set rFound = .Columns(1).Find(What:="- - - - -", After:=.Cells(1, 1), LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
On Error GoTo 0
If Not rFound Is Nothing Then
Match = rFound.Address
MsgBox (rFound.Offset(2, 0))
End If
End With
решение2
Я бы использовал для этого надстройку Power Query. Она может считывать данные из таблиц Excel.
Я бы построил 2 запроса. Первый добавил бы столбец индекса (номер строки), затем отфильтровал бы строки с тире. Затем я бы добавил простой вычисляемый столбец: [Индекс] + 2. Этот запрос не должен выводить таблицу.
Второй запрос начнется с базовой таблицы, затем объединится с первым запросом, используя этот столбец "[Index] + 2" и тип соединения внутренний (сохранить только совпадения). Этот запрос выведет новую таблицу в Excel.
Вы могли бы построить почти все это, просто щелкая в пользовательском интерфейсе Power Query. Одна необходимая формула была бы очень простой: [Index] + 2
.