excel - 循环遍历工作表

时间:2013-07-11 11:59:06

标签: excel vba excel-vba excel-2007

我之前从未在Excel中使用过Marcos。我想要做的是遍历工作表,并且列X和Y不为空,将信息提取到新工作表中。但是行Y可能有多个值,我想为Y中的每个值创建一个新记录,每个值用逗号分隔。

enter image description here

我想要的结果是

一个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#中使用它,这是我想要实现的最佳选择,任何帮助都会非常感激吗?< / p>

1 个答案:

答案 0 :(得分:1)

修复1004错误,更改

Rows(r, B).Value

Range(r, B).Value

Rows属性只接受一个索引,您尝试测试一个单元格,因此muct使用 Range Cell 对象。

还可以更轻松地使用RegEx进行编程,添加对 Microsoft VBScript正则表达式5.5库的引用:

在VB编辑器的Tools&gt; References菜单中。

然后你可以申报 Dim Regex as RegExp并使用Set Regex = New RegExp

这将为您提供Intellisense,它将帮助您进行核心编码。

有关使用Excel vba中的正则表达式的教程,请参阅

此外,在工具&gt;选项编辑标签中,选中需要变量声明和自动列表成员

等所有框