У меня есть список проектов в Excel.У каждого проекта есть три строки (act, plan, fcst) и много столбцов (один столбец = один месяц).
Что я хотел бы сделатьвыглядит следующим образом:
A) для каждого уникального значения в столбце D (проект №) добавить две строки |Завершено
B) план вычитания - актуально в одной из новых строк
C) вычитать fcst - актуально во второй из новых строк
A *) создать две новые строки и скопироватьданные из столбцов A: AE для каждого уникального значения в столбце D (проект №) |Необязательно - я могу обработать вариант A), но A * будет лучше.
Кто-нибудь знает, как написать код для выполнения пунктов B, C, A *?Я понятия не имею, как справиться с этим.
Это конечный вывод, который я хотел бы видеть (желтые и оранжевые строки - это новые, которые я хочу, чтобы макрос создавал для каждого уникального проекта # в столбцеD):
Текст в AF всегда имеет значение «Plan $ 000's», «Actual $ 000's» или «Forecast $ 000's», для каждого проекта (т.е. каждый отдельный проект имеет эти тристрок не меньше, не больше).
Данные сортируются по удару # (столбец D).Это означает, что первые три строки относятся к проекту № 123, следующие три относятся к проекту № 129, следующие три - к проекту № 761 и т. Д.
Нам разрешено играть (сортировать, фильтровать и т. Д.) Сданные до тех пор, пока мы получаем желаемый результат.: -)
Ниже приведен код, который у меня есть сейчас ... он довольно плохой:
Sub CreateAndCompare()
Dim rng As Range
Dim cl As Range
Dim dic As Object
Dim ky As Variant
Set dic = CreateObject("Scripting.Dictionary")
With Sheets("Impact")
Set rng = .Range(.Range("D2"), .Range("D" & .Rows.Count).End(xlUp))
End With
For Each cl In rng
If Not dic.exists(cl.Value) Then
dic.Add cl.Value, cl.Value
End If
Next cl
For Each ky In dic.keys
lastrow = ActiveSheet.Range("d2").CurrentRegion.Rows.Count
Cells(lastrow + 1, 4).Value = dic(ky)
Cells(lastrow + 2, 4).Value = dic(ky)
Next ky
End Sub
спасибо!