我以前从未在 Excel 中使用过 Marcos,只在 Access 中使用过。我想要做的是遍历工作表,其中 X 和 Y 列不为空,将信息提取到新工作表中。但是 Y 行可能有多个值,我想用 X 为 Y 中的每个值创建一个新记录。每个值用逗号分隔。
我想要的结果是
一个C3
一个C4
b C6
b C7
b C10
等等
到目前为止,这是我的代码:
Sub Extract()
'
' Extract Macro
'
Dim WkSht As Worksheet, myOtherSheet As Worksheet, myBook As Workbook
Dim r As Integer
Dim Regex
Dim Match
Dim text
Set myBook = Excel.ActiveWorkbook
Set myOtherSheet = myBook.Sheets("New")
Set Regex = CreateObject("VBScript.RegExp")
Regex.Patten = """[^""]*""|[^,]*"
Regex.Global = True
j = 0
For Each WkSht In ThisWorkbook.Worksheets
If WkSht.Name = "Sheet1" Then
For r = 1 To 1000
If WkSht.Rows(r, B).Value <> "" & WkSht.Rows(r, G).Value <> "" Then
text = WkSht.Rows(r, G).Value
For Each Match In Regex.Execute(text)
myOtherSheet.Cells(j, 1).Value = WkSht.Cells(r, B)
myOtherSheet.Cells(j, 2).Value = Match
j = j + 1
Next Match
Exit For
End If
r = r + 1
Next r
Exit For
End If
Next WkSht
End Sub
我无法让它运行,我认为我的语法对于正则表达式是错误的,iv 只在 c# 中使用过它,这是我想要实现的最佳选择吗?任何帮助将不胜感激?