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,我想提取所有符合G列和z列标准的行,然后复制到另一张表中。G列标准为“女性”,Z列标准>18。特别是,我希望得到所有18岁以上的女性,然后将结果复制到新的表格中。 这里是我需要合并的两个宏 提前谢谢 Sub CopyFemale() Dim c As range Dim j As Integer Dim Source As Worksheet Dim Target As Worksheet Set Source = ActiveWorkbook.Wor

我想提取所有符合G列和z列标准的行,然后复制到另一张表中。G列标准为“女性”,Z列标准>18。特别是,我希望得到所有18岁以上的女性,然后将结果复制到新的表格中。 这里是我需要合并的两个宏 提前谢谢

Sub CopyFemale()

    Dim c As range
    Dim j As Integer
    Dim Source As Worksheet
    Dim Target As Worksheet

    Set Source = ActiveWorkbook.Worksheets("Sheet1")
    Set Target = ActiveWorkbook.Worksheets("Sheet2")

    j = 1
    For Each c In Source.range("G1:G1000")
        If c = "Female" Then
           Source.Rows(c.Row).Copy Target.Rows(j)
           j = j + 1
        End If
    Next c
End Sub

您只需在测试“女性”的行上添加第二个Z>18的测试

子副本femaleover18()
尺寸c作为范围、年龄、rng作为范围
长度为“使用长度而非整数”的尺寸j
将源设置为工作表
将目标变暗为工作表
Set Source=ActiveWorkbook.Worksheets(“Sheet1”)
设置目标=活动工作簿。工作表(“Sheet2”)
j=1
对于源范围(“G2:G1000”)单元格中的每个c
如果c.Value=“女性”,则
年龄=c.EntireRow.Columns(“Z”)值
如果是数字(年龄),那么
如果年龄>18岁,则
c、 EntireRow.Copy Target.Rows(j)
j=j+1
如果结束
如果结束
如果结束
下一个c
端接头

如果使用AutoFilter,则可以复制整个数据块,而无需循环。请尝试以下代码,并让我知道你如何去

Option Explicit
Sub CopyFemale()
Dim Source As Worksheet, Target As Worksheet, LastRow As Long
Set Source = Sheets("Sheet1")
Set Target = Sheets("Sheet2")

With Source.Cells(1, 1).CurrentRegion
    .AutoFilter 2, "Female"
    .AutoFilter 3, ">18"
    .Copy Target.Cells(1)          ' Use this line to include headers
    '.Offset(1).Copy Target.Cells(1) ' Use this line to exclude headers
    .AutoFilter
End With

End Sub

尝试使用
Range.AutoFilter
Range.AdvancedFilter
。我不知道该怎么做,你能帮我处理代码吗?如果c.Value=“Female”和c.EntireRow.Columns(“Z”).Value>18,那么会出现什么错误?ColZ中有什么类型的数据?Tim Williams类型不匹配。Colz有公式,但我也尝试了数值,结果不一样。你还有别的想法吗?这些公式中有没有不返回数字的?ColZ?中的单元格中有任何错误……例如,您无法将错误值与18进行比较。感谢Kevin999的努力,但我获得了range类的自动筛选方法failed error。你还有别的建议吗?好的,我改变了参考兴趣范围的方法。请尝试新代码。您的数据实际上从哪一列开始?再次感谢,但仍不能正常工作。你会写一张A、B、C列的表格吗?A列有名字,B列有性别,C列有年龄,试着提取所有18岁以上的女性,然后复制到另一张表格,比如sheet2?好的,Wendi-代码根据你最近的评论进行了更改。到目前为止,这三条建议都在我的电脑上奏效了——如果这条建议对你不起作用,那么我真的无法进一步解释。祝你好运
Option Explicit
Sub CopyFemale()
Dim Source As Worksheet, Target As Worksheet, LastRow As Long
Set Source = Sheets("Sheet1")
Set Target = Sheets("Sheet2")

With Source.Cells(1, 1).CurrentRegion
    .AutoFilter 2, "Female"
    .AutoFilter 3, ">18"
    .Copy Target.Cells(1)          ' Use this line to include headers
    '.Offset(1).Copy Target.Cells(1) ' Use this line to exclude headers
    .AutoFilter
End With

End Sub