Estou tentando criar uma macro do Excel para formatar alguns dados que são exportados de outro programa. Aqui está um exemplo do layout de dados:
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
Eu quero criar "grupos" principais e "grupos" menores usando formatação. Eu não necessariamente quero usar o recurso de agrupamento do Excel. Eu gostaria de primeiro agrupar por ID, o que é bastante fácil, e adicionar uma linha de borda grande em negrito após cada ID.
A parte em que estou tendo problemas é com os grupos menores, já que os subcódigos não têm o código pai em sua linha, se houver mais de 1, e pode haver vários códigos com diferentes subcódigos diferentes. Os grupos menores teriam então uma linha de fronteira mais fraca depois de cada um.
Aqui está um exemplo da formatação desejada:
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
============================
Então, como posso fazer com que esses grupos menores incluam as linhas com códigos em branco abaixo deles?
Isso seria preferencialmente em uma macro como o arquivo é exportado do programa e, em seguida, precisará ser formatado. No entanto, se houver uma maneira melhor, estou definitivamente aberto a isso. O objetivo final é tornar os dados facilmente legíveis.
Aqui está o código que tenho agora para criar a formatação do maior agrupamento.
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