В настоящее время я работаю над упрощенной таблицей спецификаций, основанной на существующих спецификациях в нашей системе.
Спецификации имеют несколько частей, узлов и сборок; каждая из которых может использовать одни и те же записи.
Мои цели для этой таблицы - взять существующий перечень материалов и рассчитать
- общее количество заданий для деталей,
- объединить дубликаты записей,
- общее количество,
- объединить ячейки элемента в первую запись,
- и удалить все дубликаты, кроме первой записи.
Я также хотел бы автоматизировать формат стилей для элементов верхнего уровня (сборок и сборочных узлов), но это не критично.
Я пытаюсь сделать это через макросы. Я нашел макрос для суммирования дублирующихся строк, а затем удаляю дубликаты, за исключением первой записи, но я изо всех сил пытаюсь найти способ автоматизировать суммирование количеств для элементов с отступом.
Вот скриншот таблицы: Таблица спецификаций с отступами
Я думаю, что лучший способ сделать это - использовать Trim (Mid (Application.Caller) ,,)) с номером позиции с отступом, чтобы определить, какие количества и умножить друг на друга.
Если у кого-нибудь есть предложения, пожалуйста, дайте мне знать. Вот пример электронной таблицы, которая поможет лучше понять, что я пытаюсь сделать: https://drive.google.com/file/d/1CgdDHVsE61FpUztIMJonzTmLiNOQeyKk/view?usp=sharing
Sub remdup()
Dim ws As Worksheet
Dim lastrw As Long
Set ws = ActiveSheet
lastrw = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
ws.Range("E2:E" & lastrw).FormulaR1C1 = "=SUMIFs(C[-1],C[-4],RC[-4],C[-3],RC[-3],C[-2],RC[-2])"
ws.Range("D2:D" & lastrw).Value = ws.Range("E2:E" & lastrw).Value
ws.Range("E2:E" & lastrw).ClearContents
With ws.Range("A2:D" & lastrw)
.Value = .Value
.RemoveDuplicates Array(1, 2, 3), xlNo
End With
End Sub