如果满足多个条件,如何使用VBA将某些行详细信息复制到新工作表中?

如果满足多个条件,如何使用VBA将某些行详细信息复制到新工作表中?,vba,Vba,如果“I”列包含某个字母(或短语),并且“D”列(日期)介于、1月、2月等之间,我尝试将一行数据从一张工作表复制到另一张工作表 例如,我要复制的数据在一个名为“客户”的表中,如果第一列包含字母“T”,那么我希望该数据自动导入到下一个名为“税务待定”的表中,并在一月份与所有这些客户一起 请注意,我只想复制行的某些详细信息 我发现VBA答案为,但它只适用于一个标准 Sub CopyRow() Application.ScreenUpdating = False Dim x As Lo

如果“I”列包含某个字母(或短语),并且“D”列(日期)介于、1月、2月等之间,我尝试将一行数据从一张工作表复制到另一张工作表

例如,我要复制的数据在一个名为“客户”的表中,如果第一列包含字母“T”,那么我希望该数据自动导入到下一个名为“税务待定”的表中,并在一月份与所有这些客户一起

请注意,我只想复制行的某些详细信息

我发现VBA答案为,但它只适用于一个标准

Sub CopyRow()
    Application.ScreenUpdating = False
    Dim x As Long, MaxRowList As Long, S As String, wsSource As Worksheet, wsTarget As Worksheet

    Set wsSource = ThisWorkbook.WorkSheets("Clients")
    Set wsTarget = ThisWorkbook.WorkSheets("Tax - Pending")
    iCol = 1
    MaxRowList = wsSource.Cells(Rows.Count, iCol).End(xlUp).Row
    For x = 3 To MaxRowList
        If InStr(1, wsSource.Cells(x, 9), "T") Then
            wsTarget.Rows(x).Value = wsSource.Rows(x).Value
        End If
    Next
    Application.ScreenUpdating = True
End Sub

要检查
D列中的日期是否在当月内,请更改测试

如果InStr(1,wsSource.Cells(x,9),“T”)那么

为此:

If InStr(1, wsSource.Cells(x, 9), "T") And Month(wsSource.Cells(x, 4)) = Month(Now) Then

其他标准是什么?如果D列在2017年1月、2017年2月内,则逐月变化。(报道)谢谢!成功了。但是如果我不想复制行中的所有字段,该怎么办?就那些具体的?啊,你想只复制列I和D中的值吗?不,实际上我想复制行,但不是所有的行详细信息。例如,我只想复制给定行中的名称列code。。像那样没问题。你可以一个接一个地复制单元格,而不是把整行都复制下来。容易的。例如,要将列
A
wsTarget.Cells(x.A”).Value=wsSource.Cells(x.A”).Value
复制到MaxRowList,如果InStr(1,wsSource.Cells(x,21),“SEO”)和Month(wsSource.Cells(x,4))=Month(上一个),那么AfterLastTarget=wsTarget.Cells(Rows.Count,1)。End(xlUp)。Row wsTarget.Rows(AfterLastTarget+1).Value=wsSource.Rows(x).如果