У меня есть электронная таблица, которая содержит данные, начиная со строки 2, столбец 1, и содержит 42 столбца. Я пытаюсь написать код VBA, который будет искать все строки моих данных, начиная со строки 2, и, если значение в столбце 32 больше 575, мне нужен код для вставки достаточного количества строк ниже этой строки, чтобы любое значение было ( будь то 600 или 2000) можно разделить на 575. Так, например, если значение столбца 32 строки 5 равно 800, я хочу, чтобы код добавил строку ниже строки 5, и я хочу, чтобы он автоматически заполнял новую строку с помощью значение 575 в столбце 32 и замените значение в исходной строке тем, что было минус 575. Кроме того, в первом столбце моих данных у меня есть даты. Для каждой новой создаваемой строки я хочу, чтобы она была на неделю раньше даты в исходной строке. Вот пример того, как выглядят мои данные:
Столбец1 ... Столбец 32 ....... Столбец 42
8/15/2019 // 3873
Вот как я хочу, чтобы он выглядел после запуска кода.
Столбец1 ... Столбец 32 ...... Столбец 42
8/15/2019 // 423
8/8/2019 // 575
8/1/2019 // 575
7/25/2019 // 575
7/18/2019 // 575
7/11 / 2019 // 575
7/4/2019 // 575
Косые метки только для того, чтобы показать разделение в столбцах. И я хочу, чтобы данные из всех других столбцов остались такими же, как в строке выше. Есть ли хороший способ сделать это?
Это код, который я придумал до сих пор. Однако проблема в том, что я не могу понять, как его запрограммировать, чтобы он знал, сколько строк добавить, исходя из того, насколько велико количество. На данный момент он просто добавляет строку под любой строкой, значение столбца 32 которой больше 575. Кроме того, он просто добавляет пустые строки. В моем коде нет ничего, что бы указывало, какие значения нужно поместить во вновь созданные строки
Sub BlankLine()
Dim Col As Variant
Dim BlankRows As Long
Dim LastRow As Long
Dim R As Long
Dim StartRow As Long
Dim LargeOrder As Integer
Col = "AF"
StartRow = 1
BlankRows = 1
LargeOrder = 575
LastRow = Cells(Rows.Count, Col).End(xlUp).Row
Application.ScreenUpdating = False
With ActiveSheet
For R = LastRow To StartRow + 1 Step -1
If .Cells(R, Col).Value > LargeOrder Then
.Cells(R + 1, Col).EntireRow.Insert Shift:=xlDown
End If
Next R
End With
Application.ScreenUpdating = True
End Sub
Как я упоминал ранее, мне нужен код, чтобы добавить столько строк, сколько нужно для размещения исходного количества, с разбивкой по 575, а также вычесть неделю с каждой созданной строкой. Заранее благодарю за помощь.