/ / VBA copie o valor na coluna B com base no valor da coluna A e cole em outra folha - excel, vba

Valor de cópia do VBA na coluna B com base no valor da coluna A e cole em outra folha - excel, vba

Eu tenho um pedido muito específico com base em umplanilha com duas colunas. Quero pesquisar os valores "Valor da transação" e apenas o segundo campo "Nome / endereço" (não o primeiro e o terceiro) em uma folha separada. Existem 37 desses fios e eu preciso passar por cada um deles. Alguma ideia? Isso é o que eu tenho até agora. Ele será copiado com base no valor da transação, mas também quero copiar o segundo campo de nome / endereço e colá-lo na linha da próxima coluna.

Obrigado!

Sub cond_copy()
"assuming the data is in sheet1
Sheets("Sheet1").Select
RowCount = Cells(Cells.Rows.Count, "a").End(xlUp).Row
For i = 1 To RowCount
"assuming the true statment is in column a
Range("a" & i).Select
check_value = ActiveCell
If check_value = "Transaction Amount" Or check_value = "Transaction Amount" Then
ActiveCell.EntireRow.Copy
"assuming the data is in sheet2
Sheets("Sheet2").Select
RowCount = Cells(Cells.Rows.Count, "a").End(xlUp).Row
Range("a" & RowCount + 1).Select
ActiveSheet.Paste
Sheets("Sheet1").Select
End If
Next

End Sub

http://i.stack.imgur.com/vD3FZ.png

Respostas:

0 para resposta № 1

Será o segundo Name/Address campo sempre 9 linhas abaixo Transaction Amount? Se for esse o caso, você pode tentar isso ...

Também eu recomendaria afastar .Select. Geralmente não é necessário, diminui o desempenho e, da minha experiência, causa erros intermitentes.

Sub cond_copy()
"assuming the data is in sheet1
RowCount = 1
addressCounter = 0
With Worksheets("Sheet1")
For i = 1 To .Cells(.Cells.rows.Count, "a").End(xlUp).row
"assuming the true statment is in column a
If .Cells(i, "A").value = "Transaction Amount" Then
For x = i + 1 To .Cells(.Cells.rows.Count, "a").End(xlUp).row
If .Cells(x, "A").value = "Name/Address" Then addressCounter = addressCounter + 1
If addressCounter = 2 Then
Worksheets("Sheet2").Cells(RowCount, "A").value = .Cells(i, "B").value
Worksheets("Sheet2").Cells(RowCount, "B").value = .Cells(x, "B").value
RowCount = RowCount + 1
addressCounter = 0
Exit For
End If
Next

i = x - 1
End If
Next
End With
End Sub