Страницы: 1
RSS
Разбить записи (строки) в журнале на несколько записей (от количества дней) разделив объем на количество дней
 
Доброго!
Имеется таблица (журнал производства работ), в которой для каждой записи (строки) указан диапазон начала и конца производства работ, и значение общего объема на этот диапазон.
Необходимо разбить эти записи (строки) на несколько записей по числу дней диапазона работ и для них (сформированных записей) разбить значение объема.
В примере 2 листа (на первом -просто пример для понимания)

Очень много народу страдает этой рутиной(
 
Макрос нужно писать.
 
хау мач?
 
Посмотрите https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=125663
 
Цитата
serj-ua написал:
хау мач?
Если готовы оплатить работу, то тему следует перенести в платный раздел и я могу взяться.
Переносить тему?
 
Не представляю даже сколько это может стоить)
 
См. предложение в личке.
 
Для активного листа 'Пример для понимания'
Код
Sub RazdelitStroki()
Dim i As Long
Dim iLastRow As Long
Dim n As Long
    iLastRow = Range("B9").End(xlDown).Row
    For i = iLastRow To 10 Step -1
      Rows(i + 1).Resize(Cells(i, "I").Value).Insert
      Cells(i, "F") = Cells(i, "F") / Cells(i, "I").Value
      Cells(i, "F").NumberFormat = "#,##.##"
      Range(Cells(i, "B"), Cells(i, "G")).Resize(Cells(i, "I").Value + 1).FillDown
    Next
    iLastRow = Range("B9").End(xlDown).Row
    Range("B10:I" & iLastRow).Borders.Weight = xlThin
End Sub

Попробуйте сами перенести в реальную таблицу
 
Работает!!!
Правда даты не ставит(

Но уже ничтяк!

Спасибо!  
 
Цитата
Правда даты не ставит(
Какие даты?
 
Где дата начала производства работ, мы же по дням разбили (одна дата - одна запись/строка в журнале). Например работы производились 3 дня с 1го по 3е число, добавились 2 строки и в них должны быть 2е и 3е число соответственно
 
Код
Sub RazdelitStroki()
Dim i As Long
Dim iLastRow As Long
Dim n As Long
    iLastRow = Range("B9").End(xlDown).Row
    For i = iLastRow To 10 Step -1
      Rows(i + 1).Resize(Cells(i, "I").Value).Insert
      Cells(i, "F") = Cells(i, "F") / Cells(i, "I").Value
      Cells(i, "F").NumberFormat = "#,##.##"
      Range(Cells(i, "B"), Cells(i, "G")).Resize(Cells(i, "I").Value + 1).FillDown
        n = Cells(i, "I")
      Do
        Cells(i + n, "G") = Cells(i, "G") + n - 1
        n = n - 1
      Loop While n > 0
    Next
    iLastRow = Range("B9").End(xlDown).Row
    Range("B10:I" & iLastRow).Borders.Weight = xlThin
End Sub
 
Благодарочка!
Будем пробовать
Страницы: 1
Наверх