/ / VBA copie la valeur de la colonne B en fonction de la valeur de la colonne A et la colle dans une autre feuille - excel, vba

Copier la valeur VBA dans la colonne B en fonction de la valeur de la colonne A et la coller dans une autre feuille - excel, vba

J'ai une demande très spécifique basée sur unfeuille de calcul à deux colonnes. Je souhaite rechercher les valeurs "Montant de la transaction" et uniquement le deuxième champ "Nom / Adresse" (et non le premier et le troisième) dans une feuille séparée. Il y a 37 câbles de ce type dedans et j'en ai besoin pour parcourir chacun d'eux. Des idées? C'est ce que j'ai jusqu'ici. Il copiera en fonction du montant de la transaction, mais je souhaite également copier le deuxième champ nom / adresse et le coller dans la ligne de la colonne suivante.

Merci!

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

Réponses:

0 pour la réponse № 1

Le second Name/Address champ toujours être 9 lignes ci-dessous Transaction Amount? Si tel est le cas, vous pouvez essayer ceci ...

Aussi, je recommanderais de s'éloigner de .Select. C’est généralement inutile, diminue les performances et, d’après mon expérience, provoque des erreurs intermittentes.

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