Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 从一张图纸复制数据并粘贴到另一张图纸(在某些情况下)_Excel_Vba - Fatal编程技术网

Excel 从一张图纸复制数据并粘贴到另一张图纸(在某些情况下)

Excel 从一张图纸复制数据并粘贴到另一张图纸(在某些情况下),excel,vba,Excel,Vba,“我的宏”从多个工作表(特定的工作表称为SS)复制数据,并将其粘贴到另一个工作表(主工作表): 宏仅适用于销售的购买以相反的方式反映 宏应复制第7列和第9列中的数据,并仅在D列中有“买入”时将其粘贴到第9列和第7列(而不是第7列和第9列)。如果有“卖出”,则数据应保持不变 在D栏中,你不总是只得到“卖出”或“买入”。你也可以看到“从卖出到卖出”等,但逻辑仍然是一样的。If Sheets(“SS”).Cells(i,4)。Value“buy”然后“If Sheets(“SS”).Cells(i,4

“我的宏”从多个工作表(特定的工作表称为SS)复制数据,并将其粘贴到另一个工作表(主工作表):

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

宏应复制第7列和第9列中的数据,并仅在D列中有“买入”时将其粘贴到第9列和第7列(而不是第7列和第9列)。如果有“卖出”,则数据应保持不变

在D栏中,你不总是只得到“卖出”或“买入”。你也可以看到“从卖出到卖出”等,但逻辑仍然是一样的。

If Sheets(“SS”).Cells(i,4)。Value“buy”然后“
If Sheets(“SS”).Cells(i,4)。Value“buy”然后”谢谢大家的帮助。
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
我稍微更新了代码:

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
如果左侧(表(“SS”)。单元格(i,4)。值,3)“购买”,则
表(“主表”)。单元格(j,7)。值=表(“SS”)。单元格(i,7)。值“Rec金额”
表(“主表”)。单元格(j,9)。值=表(“SS”)。单元格(i,9)。值*-1'已付金额
其他的
表(“主表”)。单元格(j,7)。值=表(“SS”)。单元格(i,9)。值“Rec金额”
表(“主表”)。单元格(j,9)。值=表(“SS”)。单元格(i,7)。值*-1'已付金额
如果结束
现在似乎可以工作了。

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

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
如果左侧(表(“SS”)。单元格(i,4)。值,3)“购买”,则
表(“主表”)。单元格(j,7)。值=表(“SS”)。单元格(i,7)。值“Rec金额”
表(“主表”)。单元格(j,9)。值=表(“SS”)。单元格(i,9)。值*-1'已付金额
其他的
表(“主表”)。单元格(j,7)。值=表(“SS”)。单元格(i,9)。值“Rec金额”
表(“主表”)。单元格(j,9)。值=表(“SS”)。单元格(i,7)。值*-1'已付金额
如果结束

现在似乎可以工作了。

我担心的是,您声明了一个名为
lastrow
的变量,然后为另一个名为
lastrows
的变量赋值,然后为循环使用另一个名为
lastrows
的变量。请在每个代码模块的开头添加
选项Explicit
。这是我的打字错误。应该是:对于lastrowsi=2,我仍然担心声明一个名为
lastrow
的变量,然后使用一个名为
lastrowss
的变量。在每个代码模块的开头添加
Option Explicit
,可以避免这种类型的键入。当然,现在我明白你的意思了。我担心的是,你声明了一个名为
lastrow
的变量,然后给另一个名为
Lastrowss
的变量赋值,然后为循环使用另一个名为
lastrows
的变量。请在每个代码模块的开头添加
选项Explicit
。这是我的打字错误。应该是:对于lastrowsi=2,我仍然担心声明一个名为
lastrow
的变量,然后使用一个名为
lastrowss
的变量。在每个代码模块的开头添加
选项Explicit
,可以避免这种类型的输入错误。当然,现在我明白你的意思了。嗨,谢谢你的帮助。不幸的是,它不起作用。我发现运行时错误'13'类型不匹配,谢谢您的帮助。不幸的是,它不起作用。我得到运行时错误'13'类型不匹配既然你的答案很大程度上是基于@A.S.H的答案,也许接受他的答案对他的努力是公平的。出于好奇,为什么你的代码没有给出“类型不匹配”,而A.S.H的代码却给出了?(我能想到的只是你的一些“金额”实际上并不是金额。)完成@Scott Holtzman。我不太熟悉这个论坛的规则。既然你的答案很大程度上是基于@A.S.H的答案,也许接受他的答案对他的努力是公平的。出于好奇,为什么你的代码没有给出“类型不匹配”,而A.S.H的代码却给出了“类型不匹配”?(我能想到的只是你的一些“金额”实际上并不是金额。)完成@Scott Holtzman。我不太熟悉这个论坛的规则。