Этот код должен быть запущен с листа, который содержит ваши данные для сращивания. Я предположил, что вы работаете в колонке А
Код
- использует регулярное выражение, чтобы удалить все алфавитно-цифровые строки меньше или равно 3 символов
- Сплин пересмотренного набора строк для вновь созданных лист
- Разделяет эти строки, используя в Excel «текст по столбцам»
Вариантные массивы используются, чтобы сделать этот эффективный процесс
{Обновление: добавлена нет версии петли}
Original Code
Sub Spliced()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim rng1 As Range
Dim objRegex
Dim X
Dim lngRow As Long
Set ws1 = Sheets(1)
Set rng1 = ws1.Range(ws1.[a1], ws1.Cells(Rows.Count, "A").End(xlUp))
Set ws2 = Sheets.Add
X = rng1.Value2
Set objRegex = CreateObject("vbscript.regexp")
With objRegex
.Pattern = "\b\w{1,3}\b"
.Global = True
End With
For lngRow = 1 To UBound(X)
X(lngRow, 1) = Application.Trim(objRegex.Replace(X(lngRow, 1), vbNullString))
Next
ws2.Range(rng1.Address) = X
ws2.Columns("A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Space:=True
End Sub
Updated:No loops
Sub Spliced_NoLoops()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim rng1 As Range
Dim objRegex
Dim strDelim As String
Dim strOut As String
strDelim = "||"
Set ws1 = Sheets(1)
Set rng1 = ws1.Range(ws1.[a1], ws1.Cells(Rows.Count, "A").End(xlUp))
strOut = Join(Application.Transpose(rng1), strDelim)
Set ws2 = Sheets.Add
Set objRegex = CreateObject("vbscript.regexp")
With objRegex
.Pattern = "\b\w{1,3}\b"
.Global = True
End With
ws2.Range(rng1.Address) = Application.Transpose(Split(Application.Trim(objRegex.Replace(strOut, vbNullString)), "||"))
ws2.Columns("A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Space:=True
End Sub
Что вы хотите, чтобы результаты выглядели, например, хотите ли вы «имя jayson» в одной ячейке? –
по одному в каждой ячейке, например, результат может быть во втором листе: A1: имя, A2: jayson. Я буду использовать значение позже. :) –