Мне нужно извлечь строку данных из таблицы Excel и перенести ее на другой лист. Мне нужно найти серию штрихов (- - - - -), а затем извлечь строку данных, которая на 2 строки ниже штрихов.
2 ответа
Excel Find Синтаксис Find
Dim rFound As Range
Где "выражение" - это любой допустимый объект диапазона, например, Range(«A1:A100»), Columns(2) и т.д. Кроме того, объект Range возвращается всякий раз, когда мы используем метод Find.
выражение.Найти (Что, После, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)
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
Я бы использовал Power Query Add-In для этого. Он может читать данные из таблиц Excel.
Я бы построил 2 запроса. Первый добавит столбец индекса (номер строки), затем отфильтрует строки с тире. Затем я бы добавил простой вычисляемый столбец: [Индекс] + 2. Этот запрос не должен выводить таблицу.
Второй запрос начинается с базовой таблицы, затем выполняется слияние с первым запросом с использованием этого столбца «[Index] + 2» и внутреннего типа «Соединение» (сохраняются только совпадения). Этот запрос выведет новую таблицу в Excel.
Вы можете построить почти все это, просто щелкнув по интерфейсу Power Query. Одна необходимая формула была бы очень простой: [Index] + 2
.