给定行中的一个实例,将整行复制到另一个 sheet

Copy an entire row to another sheet given an instance in the row

我有大量 sheet 的数据,想要将包含 "HVT" 的所有行复制并粘贴到另一个 sheet。我是 VBA 的新手,我认为我的代码搜索整个单元格而不是单元格的内容。例如,如果单元格只说 "HVT" 它会起作用,但单元格中有多个字符串。可以在单元格中的东西的一个例子是 "mechanical system damper HVT purchased"

Private Sub CommandButton1_Click()
    a = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row

    For i = 2 To a
        If Worksheets("Sheet1").Cells(i, 11).Value = "HVT" Then
            Worksheets("Sheet1").Rows(i).Copy
            Worksheets("Sheet2").Activate
            b = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row
            Worksheets("Sheet2").Cells(b + 1, 1).Select
            ActiveSheet.Paste
            Worksheets("Sheet1").Activate
        End If
    Next

    Application.CutCopyMode = False
    ThisWorkbook.Worksheets("Sheet1").Cells(1, 1).Select
End Sub

Excel if语句接受通配符,所以你只需要知道是否要匹配整个单词"HVT":

匹配整个单词:

If Worksheets("Sheet1").Cells(i, 11).Value Like "* HVT *" Or Worksheets("Sheet1").Cells(i, 11).Value Like "HVT *" Or Worksheets("Sheet1").Cells(i, 11).Value Like "* HVT" Then

或匹配任何 HVT 实例 ("xHVTx" returns true):

If Worksheets("Sheet1").Cells(i, 11).Value Like "*HVT*" Then

会工作

以下代码已更新:

Sub transferHVT()

Dim mySH As Worksheet
Set mySH = ThisWorkbook.Sheets("Sheet1")
Dim sSH As Worksheet
Set sSH = ThisWorkbook.Sheets("Sheet2")

Application.ScreenUpdating = False

Dim sh2_Row As Integer
sh2_Row = 1
For a = 2 To mySH.Cells(Rows.Count, 11).End(xlUp).Row
    If InStr(mySH.Cells(a, 11).Value, "HVT") <> 0 Then
        'Loop through all the column
        For b = 1 To mySH.Cells(a, Columns.Count).End(xlToLeft).Column
            sSH.Cells(sh2_Row, b).Value = mySH.Cells(a, b).Value
        Next b
        sh2_Row = sh2_Row + 1
    End If
Next a

Application.ScreenUpdating = True

End Sub