Я никогда не использовал Marcos в Excel раньше только в Access. То, что я хочу сделать, - это цикл через рабочий лист и где столбцы X и Y не нуль извлекают информацию в новый рабочий лист. Но строка Y может иметь более одного значения, и я хотел бы создать новую запись для каждого значения в Y с X. Каждое значение разделяется запятой.excel - Loop через рабочий лист
Результат Я хотел бы это
С3
С4
б С6
б С7
б С10
И так далее
Вот мой код до сих пор:
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
Im смог это бежать, я думаю, что мой синтаксис является неправильным для регулярных выражений, внутривенно только когда-либо использовали его в C#, Является ли это лучшим вариантом для того, чего я пытаюсь достичь, любая помощь будет принята с благодарностью?
какое сообщение об ошибке вы получаете? Начните с изменения 'Regex.Patter' на' Regex.Pattern', а затем вернитесь к нам с явным сообщением об ошибке –
. Мне кажется, вам будет проще, если вы добавите ссылку на ** Microsoft VBScript Regular Expressions 5.5 ** library (в меню «Инструменты»> «Ссылки» * в редакторе VB *. Затем вы можете объявить «Dim Regex как RegExp» и использовать «Set Regex = New RegExp». Это даст вам ** Intellisense **, который поможет вам закодировать код. Кроме того, на вкладке «Инструменты»> «Редактор параметров» проверьте все флажки, как «Требовать объявление переменных» и «Автоматические списки участников» –
. Вы хотите лучшее решение? Используйте Notepad ++ и запишите макрос, чтобы заменить ',' символом новой строки '\ n' и просто сыграйте этот макрос, после этого вставьте его в excel или import, чтобы преуспеть через txt-файл и отсортируйте, если вам это нужно. – Mowgli