Excel 宏模式匹配过滤器

Excel 宏模式匹配过滤器

谁能帮我将其写成 VB/excel 宏?

我想从一份数据表中选择以下内容并写入另一份数据表。

选择任意行,其中列中的T字段包含字符串SYDNEY-NEWC或包含字符串F3但不包含F3最后 10 个字符,或者列中的J字段包含字符串SYDNEY-NEWC或包含字符串M4 MTWY或包含字符串F3但不包含F3最后 10 个字符的字符串。

答案1

这是一个开始。它很粗糙,缺少很多错误检查,如果单元格包含的字符少于 10 个,LEN 函数就会失败。但这会跨符合您的模式的行移动:

Sub MigrateData2()

Dim intRowCount As Integer
Dim intTargetRowCount As Integer
Dim intColumnCount As Integer

Dim CheckString1 As String
Dim CheckString2 As String

intTargetRowCount = 1

    For intRowCount = 1 To Range("A1").CurrentRegion.Rows.Count

        CheckString1 = Cells(intRowCount, 20) ' contents of column T
        CheckString2 = Cells(intRowCount, 10) ' contents of column J

        If CheckString1 = "SYDNEY-NEWC" Or InStr(CheckString1, "F3") _
          Or InStr(Len(CheckString1) - 10, CheckString1, "F3") > 0 _
          Or CheckString2 = "SYDNEY-NEWC" Or InStr(CheckString2, "M4 MTWY") _
          Or InStr(CheckString2, "F3") _
          Or InStr(Len(CheckString2) - 10, CheckString2, "F3") > 0 Then

            For intColumnCount = 2 To 20 ' change this last number to however many columns you have

              Sheets("Sheet2").Range("A1").Cells(intTargetRowCount, intColumnCount - 1).Value = _
              Sheets("Sheet1").Range("A1").Cells(intRowCount, intColumnCount).Value

            Next intColumnCount

            intTargetRowCount = intTargetRowCount + 1

        End If

    Next intRowCount

End Sub

假设:

  • 您的源数据位于 Sheet1 上并从单元格 A1 开始
  • 您的目标工作表是 Sheet2,并且您想要从单元格 A1 开始写入数据

相关内容