
Eu baixo um relatório com 8 colunas de dados em uma tabela toda semana. A quantidade de dados muda a cada semana por linha (uma semana pode ter 40 linhas, a próxima pode ter 100, mas não mais que 150). Os cabeçalhos de dados permaneceriam os mesmos.
Eu preciso ter apenas todos os dados em uma linha onde "HOT: Must Cover" aparece na coluna B e aparece/analisa automaticamente em uma tabela idêntica em outra planilha. De alguma forma, eu usaria um VLOOKUP junto com =IF?
Exemplo de tabela na planilha 1:
Responder1
Uma opção que você teria seria usar a opção de filtro no Excel e classificá-los em ordem alfabética na coluna B. Se você realmente precisar deles em uma planilha separada, o que você pode fazer é copiá-los e colá-los na próxima planilha (já que todos serão agrupados juntos da classificação).
Alternativamente, você precisaria escrever uma macro que leia a coluna B em cada linha e copie a linha se o conteúdo for "Hot: Must Cover".
Algo nesse sentido:
Dim i as Integer
Dim j as Integer
i = 0
j = 0
Do While Cells(i, 2).value != ""
if Cells(i, 2).Value == "Hot: Must Cover" Then
Worksheets("Sheet1").Range(Cells(j, 0), Cells(j, 7).Value = Worksheets("Sheet1").Range(Cells(i, 0), Cells(i, 7).Value
j = j + 1
End if
i=i+1
loop
Responder2
Acho que seria difícil conseguir isso VLOOKUP
(ou qualquer outra pesquisa). Considere esta solução VBA:
Sub test
Dim ws1 As Worksheet, ws2 As Worksheet
Dim j As Integer
Set ws1 = Worksheets(1)
Set ws2 = Worksheets(2)
j = 1
For i = 2 To (ws1.Range("A1").ListObject.DataBodyRange.Count + 1)
If ws1.Range("B" & i).Value = "HOT: Must Cover" Then
ws1.Range("A" & i & ", G" & i).Copy
ws2.Range("A" & j).PasteSpecial xlPasteValues
j = j + 1
End If
Next i
End Sub