Preciso extrair uma linha de dados de uma planilha do Excel e transferi-la para outra planilha. Preciso procurar uma série de travessões (- - - - -) e depois extrair a linha de dados que está 2 linhas abaixo dos travessões.
Responder1
Localização do Excel Encontrar sintaxe
Dim rFound As Range
Onde "expressão" é qualquer objeto de intervalo válido, por exemplo, Range("A1:A100"), Columns(2) etc. Além disso, um objeto Range é retornado sempre que usamos o método Find.
expressão.Find (O que, Depois, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)
Dim rFound As Range On Error Resume Next
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
Responder2
Eu usaria o suplemento Power Query para isso. Ele pode ler dados de tabelas do Excel.
Eu construiria 2 consultas. O primeiro adicionaria uma coluna de índice (número da linha) e, em seguida, filtraria as linhas com travessões. Eu adicionaria então uma coluna calculada simples: [Índice] + 2. Esta consulta não precisa gerar uma tabela.
A segunda consulta começaria na tabela base e, em seguida, seria mesclada com a primeira consulta usando a coluna "[Índice] + 2" e um tipo de junção interno (mantenha apenas as correspondências). Esta consulta geraria uma nova tabela no Excel.
Você poderia construir quase tudo isso apenas clicando na interface do Power Query. A única fórmula necessária seria muito simples: [Index] + 2
.