从一张纸复制数据并粘贴到另一张纸(在某些条件下)

时间:2017-01-02 17:44:04

标签: excel vba

我的宏从多张表中复制数据(特定的一张称为SS)并将其粘贴到另一张(MainSheet):

Dim lastrow As Long
'(...)

Lastrowss = Sheets (“SS”).Range(“A1”).End(xlDown).Row
'(...)

For i = 2 To lastrows
'    (...)

    Sheets("MainSheet").Cells(j, 7).Value = Sheets("SS").Cells(i, 7).Value 'Rec Amount
    Sheets("MainSheet").Cells(j, 9).Value = Sheets("SS").Cells(i, 9).Value * -1  'Paid Amount

此宏仅适用于销售购买以相反的方式反映出来。

宏应该复制第7列和第9列中的数据,并且只有在D列中有“买”时才将其粘贴到第9列和第7列(而不是第7和第9列)。如果存在“卖出”,则数据应保留同样的。

在D栏中,您并不总是只是“卖”或“买”。你也可以看到“卖到掩护”等。但逻辑仍然是一样的。

2 个答案:

答案 0 :(得分:2)

If Sheets("SS").Cells(i, 4).Value <> "buy" Then ' <-- add this test
    Sheets("MainSheet").Cells(j, 7).Value = Sheets("SS").Cells(i, 7).Value 'Rec Amount
    Sheets("MainSheet").Cells(j, 9).Value = Sheets("SS").Cells(i, 9).Value * -1  'Paid Amount
Else ' <-- here we inverse the two columns
    Sheets("MainSheet").Cells(j, 7).Value = Sheets("SS").Cells(i, 9).Value 'Rec Amount
    Sheets("MainSheet").Cells(j, 9).Value = Sheets("SS").Cells(i, 7).Value * -1  'Paid Amount

End If

答案 1 :(得分:0)

谢谢大家的帮助。 我稍微更新了代码:

If Left(Sheets("SS").Cells(i, 4).Value, 3) <> "Buy" Then
    Sheets("MainSheet").Cells(j, 7).Value = Sheets("SS").Cells(i, 7).Value 'Rec Amount
    Sheets("MainSheet").Cells(j, 9).Value = Sheets("SS").Cells(i, 9).Value * -1  'Paid Amount
Else
    Sheets("MainSheet").Cells(j, 7).Value = Sheets("SS").Cells(i, 9).Value 'Rec Amount
    Sheets("MainSheet").Cells(j, 9).Value = Sheets("SS").Cells(i, 7).Value * -1  'Paid Amount

End If

似乎现在正在工作。