Я хотел бы найти способ циклически проходить через объединенные ячейки, например, используя цикл For ... Next.
Мне удалось только заставить его работать так:
Cells(1,1).Select
For i=1 to 6
Selection.Value = arrData(i)
Selection.Offset(0,1).Select
Next i
Я ненавижу использовать .Select
- но если я использую .Offset(0,i)
, он не будет перемещаться из объединенной ячейки в объединенную ячейку, а будет просто количеством столбцов из исходной ячейки.
Для получения более подробной информации -Я копирую значения из csv-подобного формата в более отформатированный выходной лист, который затем предполагается экспортировать с кучей объединенных ячеек.
На листе несколько разделов, нов каждом разделе есть известное количество ячеек в строке.
Мой единственный рабочий раствор без .Select
должен использовать .Cells
Пример:
For row=0 to 12
with rng.Offset(1,0)
.cells(row+1,1)=arrdata(1+(row*6))
.cells(row+1,3)=arrdata(2+(row*6))
.cells(row+1,7)=arrdata(3+(row*6))
.cells(row+1,9)=arrdata(4+(row*6))
.cells(row+1,14)=arrdata(1+(row*6))
.cells(row+1,16)=arrdata(1+(row*6))
End with
Next row
но это довольно тяжело.
РЕДАКТИРОВАТЬ : Вот скриншот: целевая область
Идея состоит в том, что количество строк является полностью гибкимв зависимости от сделки.Поэтому иногда есть только одна строка, но на самом деле может быть что угодно.
Мой код генерирует этот раздел, используя относительные ссылки на основе именованных диапазонов.
А затем из уродливого листа (где вся информацияхранятся в одной строке) значения передаются в одномерный массив, затем массив должен быть передан в симпатичный лист.
Если на листе нет объединенных ячеек, формула будет выглядеть довольно просто:
Dim i as integer, j as integer
Dim ws as worksheet: set ws = Worksheets("Printable")
'data array has already been filled with info in a linear order beforehand
k=1
For i=1 to item_qt 'number of cost items lines
For j=1 to item_col 'number of detail columns (in this section)
ws.Range("item_title").Offset(1,0).Cells(i,j).Value=data(k)
k=k+1
Next j
Next i
Но из-за характера этого листа - который должен быть напечатан и приятнее на глазах - я не могу этого сделать, и мне нужно найти способ переключения между объединенными ячейками.
Надеюсь, что это Правило прояснило некоторые вещи.
Сейчас я также изучаю предложения, чтобы посмотреть, смогу ли я их как-то применить, но если кто-нибудь знает что-то лучшее, я открыт для всего.