Я пытаюсь создать макрос excel для форматирования некоторых данных, которые экспортируются из другой программы. Вот пример компоновки данных:
ID Code SubCodes
1 A1 1
1 30
1 B2 23
1 35
2 A1 1
2 30
2 A1 6
2 10
2 12
2 C3 2
2 C3 4
Я хочу создать основные "группы" и второстепенные "группы" с использованием форматирования. Я не обязательно хочу использовать функцию группировки Excel. Я хотел бы сначала сгруппировать по идентификатору, что достаточно легко, и добавить большую жирную границу после каждого идентификатора.
Часть, с которой у меня возникли проблемы, - это второстепенные группы, поскольку у подкодов нет родительского кода на его строке, если есть более 1, и может быть несколько кодов с разными подкодами, которые отличаются. Затем подгрупповая бы граница слабее после каждого.
вот пример желаемого форматирования:
ID Code SubCodes
============================
1 A1 1
1 30
----------------------------
1 B2 23
1 35
============================
2 A1 1
2 30
----------------------------
2 A1 6
2 10
2 12
----------------------------
2 C3 2
----------------------------
2 C3 4
============================
Итак, как я могу заставить эти незначительные группы включать строки с пустыми кодами под ними?
Это предпочтительно будет в макросе, так как файл экспортируется из программы, а затем должен быть отформатирован. Однако если есть лучший способ, я определенно открыт для этого. Конечная цель состоит в том, чтобы сделать данные легко читаемыми.
вот код, который у меня есть, чтобы создать форматирование для основной группировки.
Sub Macro1()
Dim StartRow As String
Dim LastRow As Integer
Dim Rng As Range
Dim cValue As String
Application.ScreenUpdating = False
StartRow = "1"
LastRow = ActiveSheet.UsedRange.Rows.Count
Set Rng = Range("A" & StartRow, "A" & LastRow)
Cells.ClearOutline
cValue = Range("A" & StartRow).Value
For Each Cell In Rng
If Cell.Value <> cValue Then
With Cell.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlMedium
End With
Else
cValue = Cell.Value
End If
Next Cell
Application.ScreenUpdating = True
End Sub