![Excel 宏模式匹配过滤器](https://linux22.com/image/1340777/Excel%20%E5%AE%8F%E6%A8%A1%E5%BC%8F%E5%8C%B9%E9%85%8D%E8%BF%87%E6%BB%A4%E5%99%A8.png)
谁能帮我将其写成 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 开始写入数据