Excel 将整行复制到行中给定实例的另一张图纸

Excel 将整行复制到行中给定实例的另一张图纸,excel,vba,copy-paste,Excel,Vba,Copy Paste,我有一张很大的数据表,希望将包含“HVT”的所有行复制并粘贴到另一张表上。我是VBA新手,我认为我的代码搜索整个单元格,而不是单元格的内容。例如,如果单元格仅显示“HVT”,则可以工作,但单元格中有多个字符串。一个可能位于单元中的示例是类似于“购买的机械系统减振器HVT” Excel if语句接受通配符,因此您只需知道是否要匹配整个单词“HVT”: 匹配整个单词: If Worksheets("Sheet1").Cells(i, 11).Value Like "* HVT *" Or Works

我有一张很大的数据表,希望将包含
“HVT”
的所有行复制并粘贴到另一张表上。我是VBA新手,我认为我的代码搜索整个单元格,而不是单元格的内容。例如,如果单元格仅显示“HVT”,则可以工作,但单元格中有多个字符串。一个可能位于单元中的示例是类似于“购买的机械系统减振器HVT”


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”返回
true
):


将起作用

以下代码已更新:

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
Sub-transferHVT()
将mySH设置为工作表
设置mySH=thishworkbook.Sheets(“Sheet1”)
将sSH设置为工作表
Set sSH=thisvoolk.Sheets(“Sheet2”)
Application.ScreenUpdating=False
Dim sh2_行为整数
sh2_行=1
对于a=2到mySH.Cells(Rows.Count,11).End(xlUp).Row
如果InStr(mySH.Cells(a,11).Value,“HVT”)为0,则
'循环遍历所有列
对于b=1到mySH.Cells(a,Columns.Count).End(xlToLeft).Column
Cells(sh2_行,b).Value=mySH.Cells(a,b).Value
下一个b
sh2_行=sh2_行+1
如果结束
下一个
Application.ScreenUpdating=True
端接头

复制了HVT所在的特定单元格,但我希望复制整行尝试更新代码,循环复制行的所有列
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