Хорошо, ваша задача в основном состоит из нескольких частей: 1 - Обход листа с помощью интеллектуальной логики 2 - Разделение 3 - Размещение данных в новой ячейке
Это не доказано для работы, но это должно дать вамбоеприпасы для достижения вашей цели с небольшими усилиями.
Sub mySub()
dim i,j,dummy,dummy2, blankCounter
i=1
j=1
blankCounter=0
'@@@@@@Section1
do while ThisWorkbook.Worksheets(1).Cells(1, j)<>""
do while blankCounter<=5
if ThisWorkbook.Worksheets(1).Cells(i, j)=""
blankCounter=blankCounter+1
else
'@@@@@@Section2
dummy=Split(ThisWorkbook.Worksheets(1).Cells(i, j),"—")
for k=0 to Ubound(dummy)
ThisWorkbook.Worksheets(2).Cells(i, j+k)=dummy(k)
next k
end if
i=i+1
loop
blankCounter=0
j=j+1
loop
end Sub
хорошо, на английском языке.Первый раздел рассматривает эту книгу («это» обычно встречается в Java, но это более ощутимый пример такой логики).В этой книге посмотрите мой первый лист.В этом рабочем листе давайте посмотрим на col1, row1.Теперь мы будем зацикливать строки и продолжать, пока они не станут пустыми, проделать то же самое со столбцами.В основном это позволит найти размеры вашей матрицы (данных).
Хорошо, теперь, когда мы можем пройти книгу, мы находимся на полпути.
Теперь вы познакомитесь с функциональностью разделения вVBA, который также существует практически на каждом языке.Split ищет что-то в вашей строке и разбивает вашу строку по аргументу, который вы предоставляете.Пустышка будет содержать любые возвращаемые значения.Размер манекена неизвестен, поэтому мы не должны жестко его кодировать, иначе он сломается, когда разделителя нет.
При этом мы сейчас вводим Ubound.Ubound - это функциональность, которая определяет размер вашего массива.Обратите внимание: если Ubound возвращает 1, это означает, что у вас есть одно значение.Массивы автоматически индексируются в 0, поэтому вы должны помнить об этом, а не циклически повторять от 1 до Ubound, это приведет к ошибке и также приведет к неправильному коду.
Хорошо, хорошо, что теперь мы можем проходить наш массив и нашу книгунам просто нужно поместить эти значения в нужные ячейки.var k должен быть в состоянии сделать это для вас.
Как я уже сказал, я не проверял этот код, поэтому вам нужно убедиться, что эта логика функционирует должным образом, поскольку теперь я понимаю, что она не помещает данные в правильную ячейку, ноэто будет твое решение.