Как разделить текст и перейти к следующей строке - PullRequest
0 голосов
/ 06 февраля 2019

Я использую функцию разделения для разделения текста с использованием пробелов.Я получил свой макрос для разбиения текста, но у меня возникают трудности с тем, чтобы цикл переместился на следующую строку ниже для разделения.

Sub Split_Text_Test1()

Dim Txt As String
Dim i As Integer
Dim FullName As Variant

Range("A1").Select

Txt = ActiveCell.Value

FullName = Split(Txt, " ")

For i = 0 To UBound(FullName)
    Cells(1, i + 1).Value = FullName(i)
Next i

End Sub

Ответы [ 4 ]

0 голосов
/ 06 февраля 2019

Я добавил кое-что к вашему коду, посмотрите, соответствует ли это вашей цели.Однако, как сказал SJR, параметр «Текст в столбцы» в меню «Данные» сделает то же самое с меньшими усилиями.

Sub Split_Text_Test1()

Dim Txt As String
Dim i As Integer
Dim FullName As Variant
Dim lastRow As Long
Dim myRange As Range

With ActiveSheet.UsedRange
        lastRow = .Rows(.Rows.Count).Row
End With
Debug.Print lastRow

'Range("A1").Select

Set myRange = ActiveSheet.Range("A1", "A" & lastRow)

    For Each cell In myRange

        Txt = cell.Value

        FullName = Split(Txt, " ")

            For i = 0 To UBound(FullName)
                Cells(cell.Row, i + 1).Value = FullName(i)
            Next i
    Next cell

End Sub
0 голосов
/ 06 февраля 2019
Sub Split_Text_Test1()

Dim Txt As String
Dim i As Integer
Dim FullName As Variant
Dim R As Integer, C As Integer
Range("A1").Select ' assumes that the cells below that are empty 

Txt = ActiveCell.Value

FullName = Split(Txt, " ")
R = ActiveCell.Row
C = ActiveCell.Column
For i = 0 To UBound(FullName)
    Cells(R + 1 + i, C).Value = FullName(i)
Next i

End Sub
0 голосов
/ 06 февраля 2019

В этом случае я бы использовал цикл (и ваше решение было не так уж далеко от этого):

Dim Txt As String
Dim i As Integer
Dim FullName As Variant
Dim R As Integer, C As Integer, MaxR as Integer
C = 1 ' can be another loop as well
For R = 1 to 1000

Txt = Trim(Cells(r,1).Value) ' will remove space from start and end
FullName = Split(Txt, " ")

For i = 0 To UBound(FullName)
    Cells(R , C + 1 + i ).Value = FullName(i)
Next i

Next R
0 голосов
/ 06 февраля 2019

Возможно, вам нужно изменить бит внутри цикла, так как вы начинаете с А1.Это предполагает, что вы хотите записи в A2 и вниз.Обычно не рекомендуется использовать Select / Activate, не очень надежный.

Отредактирован для перемещения по столбцам, а не вниз по строкам.

For i = 0 To UBound(FullName)
    Range("A1").Offset(,i + 1).Value = FullName(i)
Next i

Тем не менее, вы можете вообще избежать цикла и использовать

Range("B1").Resize(, UBound(FullName) + 1).Value = FullName
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...