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