Здравствуйте, это заняло у меня некоторое время, но я действительно нашел довольно увлекательную / полезную небольшую процедуру в этом, поэтому я немного поиграл.
Я создал немногопроцедура, в которой вы можете указать, из какого столбца вы хотите получить данные, и в какой столбец вы хотите вставить данные.При следующем вызове:
Процедура parse_column
кодируется следующим образом:
' parses all the values into an array
Private Sub parse_column(columnID As Integer, toColumn As Integer)
Dim totalstring As String
Dim lastrow As Integer
Dim ws As Worksheet: Set ws = Sheets("Sheet1") 'change to whatever sheet you are working with
Dim startingrow As Integer
startingrow = 2 'change to whatever row you want the procedure to start from _
(i skipped first row, because it acts as a header)
With ws
lastrow = .Cells(.Rows.Count, columnID).End(xlUp).Row
End With
Dim columnrange As Range: Set columnrange = Range(Cells(startingrow, columnID), Cells(lastrow, columnID))
For Each Rng In columnrange
totalstring = totalstring + Trim(Rng) ' we'll concatenate all the column values into a one string _
(if you wish to take spaces into accoumt, don't use trim)
Next Rng
Dim buffer() As String
ReDim buffer(Len(totalstring) - 1) '(avoid indexation by 0)
For i = 1 To Len(totalstring)
buffer(i - 1) = Mid(totalstring, i, 1) 'we fill in buffer with values
Next i
' we paste values to specified column
For i = (LBound(buffer)) To UBound(buffer)
ws.Cells((i + startingrow), toColumn).Value2 = buffer(i)
Next i
End Sub
Например, если вы хотите проанализировать все данные из столбца 1 (A) вСтолбец 4 (D), вы бы вызвали его в своей процедуре следующим образом
Private Sub splitcells()
Call parse_column(1, 4)
End Sub
Красота всего этого в том, что вы можете просто зациклить это для всех столбцов на вашем листе с помощью простого статического цикла forприращение.Например, если у нас было 3 столбца:
Предположим, у нас есть следующие данные:
^ Примечание.как столбец C даже не должен быть ограничен 3 символами
Мы могли бы использовать простой цикл for, чтобы перебрать все 3 столбца и вставить их в 4-й следующий столбец справа.
Private Sub splitcells()
Dim i As Integer
For i = 1 To 3
Call parse_column(i, (i + 4))
Next i
End Sub
даст следующий результат: