Vba 如果满足条件,如何将行复制到新工作表中?

Vba 如果满足条件,如何将行复制到新工作表中?,vba,excel,Vba,Excel,作为一个头脑清醒的人,当涉及到VBA时,我是一个彻头彻尾的傻瓜,尽管我一直在努力学习(没有成功?) 如果列“I”包含某个字母(或短语),我试图将一行数据从一张工作表复制到另一张工作表。例如,我想复制的数据在一个名为“Clients”的工作表中,如果第一列包含字母“T”,那么我想将该数据自动导入到下一个名为“Tax-Pending”的工作表中,但我遇到了问题。如有必要,我还可以考虑将第I列中的文本更改为更具描述性。我的数据从所有图纸的第3行开始(前两行是标题) 如果你不需要格式化,这应该可以。请注

作为一个头脑清醒的人,当涉及到VBA时,我是一个彻头彻尾的傻瓜,尽管我一直在努力学习(没有成功?)

如果列“I”包含某个字母(或短语),我试图将一行数据从一张工作表复制到另一张工作表。例如,我想复制的数据在一个名为“Clients”的工作表中,如果第一列包含字母“T”,那么我想将该数据自动导入到下一个名为“Tax-Pending”的工作表中,但我遇到了问题。如有必要,我还可以考虑将第I列中的文本更改为更具描述性。我的数据从所有图纸的第3行开始(前两行是标题)


如果你不需要格式化,这应该可以。请注意,这将“复制”列I包含字母“T”的任何行。换句话说,“1T”、“AT”、“TT”、“@T”或包含的任何组合将被复制

Sub CopyRow()

Application.ScreenUpdating = False

Dim x As Long
Dim MaxRowList As Long
Dim S As String
Dim wsSource As Worksheet
Dim 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
如果您只需要“T”而不需要其他内容,请使用

If wsSource.Cells(x, 9) = "T" Then
编辑:如果要将数据追加到目标工作表的底部,则将
if
块更改为

If InStr(1, wsSource.Cells(x, 9), "T") Then
    AfterLastTarget = wsTarget.Cells(Rows.Count, 1).End(xlUp).Row
    wsTarget.Rows(AfterLastTarget + 1).Value = wsSource.Rows(x).Value
End If

只需快速浏览一下,就可以知道您想要
S=wsSource.Cells(x,9)
作为列I。您需要格式化吗?您确定要删除行吗?这只是一个想法,因为您自称是“noob”,但我想知道您是否知道Excel的自动筛选功能,它可以让您在不需要任何VBA的情况下在同一工作表上筛选这些记录。但也许你需要把它们放在单独的工作表上,在这种情况下。。。进行。
If InStr(1, wsSource.Cells(x, 9), "T") Then
    AfterLastTarget = wsTarget.Cells(Rows.Count, 1).End(xlUp).Row
    wsTarget.Rows(AfterLastTarget + 1).Value = wsSource.Rows(x).Value
End If