Excel VBA-如果值不是0,00,则从上到下复制行

Excel VBA-如果值不是0,00,则从上到下复制行,vba,excel,range,Vba,Excel,Range,我正在尝试创建这个Excel宏,它基本上将整个列从A到F复制到一个单独的电子表格中。但仅当Dx中的值不是0,00时。例如,C18中的值可能是11等,但D18中的值可能是0,00。如果是这种情况,不要复制该行。这能用一件简单的事情来完成吗?你最好把你的范围变成一张桌子,然后用一张桌子。然后,您可以将过滤后的行复制到另一个工作表中 另一种选择是将所有内容复制到一个数组中,然后将所需的行复制到另一个数组中,最后将其写出。我认为这可能效率较低。试试看。您需要更改代码中的工作簿和工作表名称: Sub Co

我正在尝试创建这个Excel宏,它基本上将整个列从A到F复制到一个单独的电子表格中。但仅当Dx中的值不是0,00时。例如,C18中的值可能是11等,但D18中的值可能是0,00。如果是这种情况,不要复制该行。这能用一件简单的事情来完成吗?

你最好把你的范围变成一张桌子,然后用一张桌子。然后,您可以将过滤后的行复制到另一个工作表中


另一种选择是将所有内容复制到一个数组中,然后将所需的行复制到另一个数组中,最后将其写出。我认为这可能效率较低。

试试看。您需要更改代码中的工作簿和工作表名称:

Sub CopyTest()

Dim fromWB As Workbook
Dim toWB As Workbook
Dim i As Integer

Set fromWB = Application.Workbooks("WBName.xls")
Set toWB = Application.Workbooks("OtherWBName.xls")

For i = 1 To fromWB.Worksheets("WSName").UsedRange.Rows.Count

    If fromWB.Worksheets("WSName").Cells(i, 4) <> "0,00" Then
        fromWB.Worksheets("WSName").Rows(i).Copy
        toWB.Worksheets("OtherWSName").Cells(i, 1).Paste
    End If

Next i

End Sub
子CopyTest()
将fromWB设置为工作簿
将toWB设置为工作簿
作为整数的Dim i
Set fromWB=Application.workbook(“WBName.xls”)
设置toWB=Application.workbook(“OtherWBName.xls”)
对于i=1到fromWB.Worksheets(“WSName”).UsedRange.Rows.Count
如果fromWB.工作表(“WSName”).单元格(i,4)“0,00”,则
fromWB.工作表(“WSName”).行(i).复制
toWB.工作表(“OtherWSName”).单元格(i,1).粘贴
如果结束
接下来我
端接头

Mmm,但我需要自动触发此操作。我希望它发生在文档打开触发器上。所以我认为它应该是一个宏。@Kenny可以使用macro@KennySamples@Kenny在这篇文章的顶部有一个关于表格创建本身的更好的例子,MSDN没有像我想的那样深入,对此表示抱歉。使用表格有什么真正的好处吗?基本上排序函数都很整洁?我会调查一下的。例如,我可以创建一个包含我要查找的所有列的表。然后使用排序对该列中包含“0”或“0,00”的行进行排序?您自己尝试过什么吗?没有,因为我不知道从哪里开始!我很习惯使用vba这个词,但Excel vba在某种程度上是另一个世界。我还没有学会如何定位单元格、列和行。谢谢!这是一个开始!:)然而,这一切都发生在同一个工作簿中,只是单独的工作表。而且,第4列可能不是0。所有单元格可能都是0。基本上,我想要的就是复制所有指定的列和那些不是0或0,00的列中的每一行。我会自己尝试一些东西,但如果你有任何想法,请:)