Дано: Лист 1 со столбцом данных. Данные идут в формате: А1, 1,1,1...,A2, 2, 2, 2..., A3, 3,3,3... и т.д. Единиц, двоек, троек и прочих цифр между Аn и An+1 может быть от 1 до 15 штук. Т.е. может быть А4, 4, А5. А может быть и А7, 7, 7, 7, 7, 7, 7, А8 (шесть семерок, в этом примере). При этом цифры всегда идут последовательно, т.к. это нумерация (т.е после Аn идет от одной до 15 цифр "n", после последней идет Аn+1 и дальше от 1 до 15 штук цифр "n+1" и т.д.)
Необходимо: На основании данных столбца генерировать лист № 2 и лист № 3 с форматированием как во вложенном образце. Понять какое форматирование соответствует какой строке исходных данные просто, посмотрев вложение.
Дано: Лист 1 со столбцом данных. Данные идут в формате: А1, 1,1,1...,A2, 2, 2, 2..., A3, 3,3,3... и т.д. Единиц, двоек, троек и прочих цифр между Аn и An+1 может быть от 1 до 15 штук. Т.е. может быть А4, 4, А5. А может быть и А7, 7, 7, 7, 7, 7, 7, А8 (шесть семерок, в этом примере). При этом цифры всегда идут последовательно, т.к. это нумерация (т.е после Аn идет от одной до 15 цифр "n", после последней идет Аn+1 и дальше от 1 до 15 штук цифр "n+1" и т.д.)
Необходимо: На основании данных столбца генерировать лист № 2 и лист № 3 с форматированием как во вложенном образце. Понять какое форматирование соответствует какой строке исходных данные просто, посмотрев вложение.beliberder
Может, проще задавать логику просто количеством "блоков"? Типа A1-2, A2-3, A3-2, A4-3 ? Ведь всё равно, для каждого листа логика форматирования/объединения должна быть описана отдельно. Я бы, конечно, пошел по пути того, чтобы немного "унифицировать" процедуру, поскольку в противном случае придётся именно описание форматирования каждого блока засовывать в код...
Вот, разбирайтесь... Даже если и не разберётесь - поставленную задачу код решает
Может, проще задавать логику просто количеством "блоков"? Типа A1-2, A2-3, A3-2, A4-3 ? Ведь всё равно, для каждого листа логика форматирования/объединения должна быть описана отдельно. Я бы, конечно, пошел по пути того, чтобы немного "унифицировать" процедуру, поскольку в противном случае придётся именно описание форматирования каждого блока засовывать в код...
Вот, разбирайтесь... Даже если и не разберётесь - поставленную задачу код решает AndreTM
А почему нет-то? Там процедура на несколько строчек - пройтись по столбцу и собрать строку-формат Дайте только несколько примеров данных вашего "входного столбца"
А почему нет-то? Там процедура на несколько строчек - пройтись по столбцу и собрать строку-формат Дайте только несколько примеров данных вашего "входного столбца" AndreTM
While Len(oCell) > 0 If Val(oCell) = 0 Then cVF = cVF & IIf(nCounter > 0, nCounter, "") & "|" & oCell & "~" nCounter = 0 End If If Val(oCell) > 0 Then If nCounter = 0 Then cVF = cVF & oCell & "~" nCounter = 1 Else nCounter = nCounter + 1 End If End If Set oCell = oCell.Offset(1) Wend
cVF = cVF & nCounter Cells(1, 2) = cVF
End Sub
[/vba]
Этот пример - в виде процедуры, которая собирает данные из первого столбца и пишет строку формата в ячейку [B1]. У себя же можешь оформить его в виде функции, например. И собирать данные из любого места, какое укажешь, а возвращать - в нужное место на листе-стправочнике с описанием форм.
Ну, используй что-то типа такого кода:
[vba]
Код
Sub createVF()
cVF = "~~" Set oCell = Cells(1, 1) nCounter = 0
While Len(oCell) > 0 If Val(oCell) = 0 Then cVF = cVF & IIf(nCounter > 0, nCounter, "") & "|" & oCell & "~" nCounter = 0 End If If Val(oCell) > 0 Then If nCounter = 0 Then cVF = cVF & oCell & "~" nCounter = 1 Else nCounter = nCounter + 1 End If End If Set oCell = oCell.Offset(1) Wend
cVF = cVF & nCounter Cells(1, 2) = cVF
End Sub
[/vba]
Этот пример - в виде процедуры, которая собирает данные из первого столбца и пишет строку формата в ячейку [B1]. У себя же можешь оформить его в виде функции, например. И собирать данные из любого места, какое укажешь, а возвращать - в нужное место на листе-стправочнике с описанием форм.AndreTM