/ / Wartość kopii VBA w kolumnie B na podstawie wartości w kolumnie A i wklej do innego arkusza - excel, vba

Wartość kopii VBA w kolumnie B na podstawie wartości w kolumnie A i wklej do innego arkusza - excel, vba

Mam bardzo specyficzną prośbę opartą na aarkusz kalkulacyjny z dwiema kolumnami. Chcę przeszukać wartości „Kwota transakcji” i tylko drugie pole „Nazwa / Adres” (nie pierwsze i trzecie) w oddzielnym arkuszu. Jest 37 takich drutów i potrzebuję ich, aby przebiegał przez każdy z nich. Jakieś pomysły? To jest to, co mam do tej pory. Zostanie skopiowany na podstawie kwoty transakcji, ale chcę również skopiować drugie pole nazwa / adres i wkleić w wierszu w następnej kolumnie.

Dzięki!

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

Napis końcowy

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

Odpowiedzi:

0 dla odpowiedzi № 1

Czy drugi Name/Address pole zawsze powinno być 9 wierszy poniżej Transaction Amount? Jeśli tak jest, możesz spróbować tego ...

Polecam także kierowanie z dala od .Select. To zwykle nie jest potrzebne, obniża wydajność, a z mojego doświadczenia powoduje sporadyczne błędy.

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