我正在尝试创建一个 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 的分组功能。我想先按 ID 分组,这很容易,然后在每个 ID 后添加一条粗体边框线。我遇到麻烦的部分是次要组,因为如果子代码超过 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
答案1
这应该可行(根据您的喜好更改) -
Sub Macro1()
Dim LastRow As Integer
LastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
ActiveSheet.Cells.Borders.LineStyle = xlNone
For Each c In Range("A1:A" & LastRow)
If c <> c.Offset(1) Then
With Range(c, c.Offset(, 2)).Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlMedium
End With
End If
Next
For Each c In Range("B1:B" & LastRow)
If c.Borders(xlEdgeBottom).LineStyle = xlNone And c.Offset(1) <> "" Then
With Range(c.Offset(, -1), c.Offset(, 1)).Borders(xlEdgeBottom)
.LineStyle = xlDashDot
End With
End If
Next
End Sub