Excel 两行周围的外边框

Excel 两行周围的外边框
ID        Date         Code     Price
9202188   04/11/2014   212015   29,47
                       212026   30,5
9202190   03/11/2014   813012   99,47
                       814027   60,5

我在 Excel 文件中有这些数据(作为示例)。每行都以 ID 号开头,可以有多个与之关联的代码。(我从一个旧网站获取了这些数据,大致是这种格式)。

因此,在这个例子中,ID 9202188 有 2 个代码,1 个日期有 2 个价格,可以说这是一个分组商品。

我现在试图让 Excel 在整个组周围添加一个外边框,如下所示:

ID        Date         Code     Price
______________________________________
|9202188   04/11/2014   212015   29,47|
|_______________________212026___30,5_|
|9202190   03/11/2014   813012   99,47|
|_______________________814027___60,5_|

这可以自动处理 200 组项目列表(每组至少包含 2 行或更多行,但始终只有 1 个 ID 号)吗?

然后,我还需要能够按 ID 对组进行排序,同时将行保持在一起,但这是另一个问题。

答案1

这个宏应该可以让你得到你想要的边界。

Sub wrap_border()
    Dim r As Long, br As Long, lColumns_Wide As Long, lColumn_With_Solid_Data As Long
    lColumns_Wide = 17
    lColumn_With_Solid_Data = 16
    With ActiveSheet
        For r = 2 To .Cells(Rows.Count, lColumn_With_Solid_Data).End(xlUp).Row
            If CBool(Len(.Cells(r, 1).Value)) Then
                If CBool(Len(.Cells(r + 1, 1).Value)) Then
                    br = r
                ElseIf CBool(Application.CountA(.Cells(r + 1, 1).Resize(Rows.Count - r, 1))) Then
                    br = .Cells(Rows.Count, lColumn_With_Solid_Data).End(xlUp).Row
                    br = Application.Evaluate("MIN(INDEX(ROW(" & (r + 1) & ":" & br & ")+NOT(LEN(A" & (r + 1) & ":A" & br & "))*1E+99,,))")
                Else
                    br = .Cells(Rows.Count, lColumn_With_Solid_Data).End(xlUp).Row + 1
                End If
                .Cells(r, 1).Resize(br - r, lColumns_Wide).BorderAround ColorIndex:=13, Weight:=xlThick
            End If
        Next r
    End With
End Sub

在您的工作表上运行它之后,您可以期待类似以下的结果。

     边框 VBA

修改边框样式的参数.BorderAround可以在以下位置找到Range.BorderAround 方法。请记住,您可以使用Color:=或,ColorIndex:=但不能同时使用。我发现ColorIndex只要您可以使用有限的调色板,使用起来就更容易了。这里有一个 ColorIndex 表可供选择。

     颜色索引表

至于排序,您必须填写 A 列中的空白单元格,或使用帮助列向右移动以协助保持价值观一致。

修改:我添加了额外的功能,以便可以设置边框区域的宽度。这要求还识别其中一列没有空白单元格。请参阅修订后的代码中的第 2 行和第 3 行。

答案2

这是使用条件格式的部分解决方案

=NOT(ISBLANK(B2))

=ISBLANK(B2)

在此处输入图片描述

相关内容