VBA Excel:搜索表格中的部分字符串,然后将行和粘贴到另一个表格中

时间:2015-02-10 16:26:16

标签: excel vba excel-vba

我是VBA的新手,我需要一些帮助来编写代码来执行特定的功能。

我需要能够在“ B ”列中搜索部分字符串,然后将该行输出到另一张表格中。

例如, 我需要将所有包含“ MOTOR ”字样的行作为“ B ”列中字符串的一部分,并将这些行粘贴到“表2 < / strong>“栏目中的刺痛” B “可能有各种各样的字符串,例如” TEFCMOTOR286B2 “或” MOTORSLIDEBASE286B2 “,我需要复制具有前一个字符串的两个行并将它们放入“表2 ”的列表中。需要复制的行数将有所不同,有时不会出现任何部分字符串“完全 MOTOR

如果您需要更多信息,请与我们联系。

2 个答案:

答案 0 :(得分:0)

对于宏录制器

来说,这是一个完美的工作
  1. 启用记录器
  2. 在原始数据上放置 AutoFilter
  3. 使用 AutoFilter 选择文本过滤器&gt;包含...
  4. 复制可见行并粘贴到另一张表
  5. 关闭 Recorder

答案 1 :(得分:0)

如果从Sheet1复制到Sheet2,可以试试这个。

Option Explicit

Public Sub TransferMotor()
    Dim lngLastRow As Long
    Dim lngRow As Long
    Dim strValue As String
    Dim lngRowOutput As Long

    ' where does the data end in Sheet1
    lngLastRow = Sheet1.UsedRange.Rows.Count

    If lngLastRow = 1 Then Exit Sub ' no data

    ' Clear down sheet2, assume we have column headings in row 1 we want to keep
    Sheet2.Range("2:1048576").Clear

    lngRowOutput = 2 ' where are we going to write the values to in Sheet2 when we find a "MOTOR" phrase

    For lngRow = 2 To lngLastRow
        strValue = Sheet1.Cells(lngRow, 2).Value ' get value from column B

        If InStr(1, strValue, "MOTOR", vbTextCompare) > 0 Then ' can we find "MOTOR" in the text
            Sheet1.Rows(lngRow).Copy
            Sheet2.Rows(lngRowOutput).PasteSpecial
            lngRowOutput = lngRowOutput + 1
        End If

    Next lngRow



End Sub