/ / VBA-Kopierwert in Spalte B basierend auf dem Wert in Spalte A und Einfügen in ein anderes Blatt - Excel, Vba

VBA-Kopierwert in Spalte B basierend auf dem Wert in Spalte A und Einfügen in ein anderes Blatt - Excel, VBA

Ich habe eine sehr spezifische Anfrage, die auf a basiertTabelle mit zwei Spalten. Ich möchte die Werte "Transaktionsbetrag" und nur das zweite Feld "Name / Adresse" (nicht das erste und dritte) in einem separaten Blatt suchen. Es gibt 37 solcher Drähte, und ich brauche es, um durch jedes Kabel zu laufen. Irgendwelche Ideen? Das habe ich bis jetzt. Es wird basierend auf dem Transaktionsbetrag kopiert, aber ich möchte auch das zweite Feld Name / Adresse kopieren und in die Zeile in der nächsten Spalte einfügen.

Vielen Dank!

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

Antworten:

0 für die Antwort № 1

Wird der zweite Name/Address Feld ist immer 9 Zeilen darunter Transaction Amount? Wenn dies der Fall ist, können Sie dies versuchen ...

Ich würde auch empfehlen, wegzulenken .Select. Es wird normalerweise nicht benötigt, verringert die Leistung und verursacht aus meiner Erfahrung gelegentliche Fehler.

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