Страницы: 1
RSS
Заполнение умной таблицы данными из этой же таблицы по условию
 
Добрый день.
Столкнулся с проблемой, что не придумаю как написать код)
Суть в том, что имеется табличка, которая формируется через PQ. В самом запросе PQ я высчитываю в столбце "Days" разницу между двумя датами start и finish (я обе на всякий случай оставил, для понимания логики).
Пытаюсь добиться от макроса того, что бы он проверял значение в столбце "Days" (X) каждой строки умной таблицы и если значение больше 1, то делил кол-во в столбце "Value" на это число X, и создавал\копировал строк X - 1 таким образом, что бы в каждой дата start была + 1.
Например, если делим на число 5, то создать нужно ещё 4 строки
Файл пример во вложении.
Спасибо.
 
Цитата
как написать код)
Попробуйте так
Код
Sub insertrow()
Dim tbl As ListObject
Dim n As Long
Dim k As Long
Dim i As Long
  Set tbl = ActiveSheet.ListObjects(1)
  For n = tbl.DataBodyRange.Rows.Count To 1 Step -1
    k = tbl.DataBodyRange(n, 5)
    For i = 1 To k - 1
      tbl.ListRows.Add (n + i)
      tbl.DataBodyRange(n + i, 1) = tbl.DataBodyRange(n, 1) + i
      tbl.DataBodyRange(n + i, 2) = tbl.DataBodyRange(n, 2)
      tbl.DataBodyRange(n + i, 3) = tbl.DataBodyRange(n, 3)
      tbl.DataBodyRange(n + i, 4) = tbl.DataBodyRange(n, 4) / k
      tbl.DataBodyRange(n + i, 4).NumberFormat = "#,###.00"
    Next
      tbl.DataBodyRange(n, 4) = tbl.DataBodyRange(n + 1, 4)
      tbl.DataBodyRange(n, 4).NumberFormat = "#,###.0"
  Next n

End Sub
 
Цитата
Troff написал:
Пытаюсь добиться от макроса
да можно и в PQ это решить
m
Пришелец-прораб.
 
Цитата
написал:
Попробуйте так
Добрый день. Очень интересный вариант, я даже не думал в этом ключе.
Всё отлично работает, но немного дописал код, иначе если значение k было <=1 то он просто стирал количество
 
Цитата
написал:
да можно и в PQ это решить
Добрый день. Спасибо за решение.
Не углублялся в PQ в пользовательские функции, пока почему-то выскакивает ошибка. Буду разбираться)
Страницы: 1
Наверх