【问题标题】:How to copy rows into new sheet if condition is met?如果满足条件,如何将行复制到新工作表中?
【发布时间】:2015-09-23 21:18:45
【问题描述】:

请注意,尽管我一直在尝试(不成功?)学习,但我在 VBA 方面完全是个菜鸟。

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

Sub CopyRow()

Dim x As Long
Dim iCol As Integer
Dim MaxRowList As Long
Dim S As String

Set wsSource = Worksheets("Clients")
Set wsTarget = Worksheets("Tax - Pending")

iCol = 1
MaxRowList = wsSource.Cells(Rows.Count, iCol).End(xlUp).Row

For x = MaxRowList To 1 Step -1
    S = wsSource.Cells(x, 1)
    If S = "T" Then
        AfterLastTarget = wsTarget.Cells(Rows.Count, 1).End(xlUp).Row + 1
        wsSource.Rows(x).Copy
        wsTarget.Rows(AfterLastTarget).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
        wsSource.Rows(x).Delete
    End If
Next

Application.ScreenUpdating = True

End Sub

【问题讨论】:

  • 快速浏览一下就知道您需要 S = wsSource.Cells(x, 9) 列 I。
  • 您需要格式化吗?确定要删除行吗?
  • 只是一个想法,因为您自称是“菜鸟”,但我想知道您是否知道 Excel 的自动过滤器,它可以让您在同一张纸上过滤这些记录无需任何 VBA。但也许您需要将它们放在单独的工作表上,在这种情况下......继续。

标签: vba excel


【解决方案1】:

如果您不需要格式化,这应该可以。请注意,这将“复制”第 I 列包含字母“T”的任何行。换句话说,“1T”、“AT”、“TT”、“@T”或包含“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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多