我有一张如下表所示的表格。如何让Excel在第4列中放置具有相同编号的组的边框,以便在组周围有边框。我在想条件格式可以做到,但我想不出怎么做。所以我认为唯一的选择是宏。有人可以帮忙吗?
1 64436 549419 1
2 64437 549420 1
3 64438 549421 1
4 64439 549422 1
5 64440 549423 1
6 64441 549424 1
7 64442 549425 1
8 64443 549426 1
9 64444 549427 1
10 64445 549428 1
11 64446 549429 1
12 64447 549430 1
13 64448 549431 2
14 64449 549432 2
15 64450 549433 2
16 64451 549434 2
17 64452 549435 2
18 64453 549436 2
19 64454 549437 2
20 64455 549438 2
21 64456 549439 2
22 64457 549440 4
23 64458 549441 4
24 64459 549442 5
25 64460 549443 5
26 64461 549444 5
27 64462 549445 5
28 64463 549446 5
29 64464 549447 5
30 64465 549448 6
31 64466 549449 6
32 64467 549450 6
33 64468 549451 6
34 64469 549452 6
35 64470 549453 6
36 64471 549454 6
37 64472 549455 9
38 64473 549456 9
39 64474 549457 9
答案 0 :(得分:2)
您需要使用相对引用。
将所有'$ C'替换为'$ {Your Column}'。请注意,这不会在单个项目周围放置任何边框,因为您在选择中不能再有三个条件格式条件。
答案 1 :(得分:1)
我无法看到一个简单的非宏解决方案,但确切地说您需要的是什么,但PowerUser的解决方案似乎没问题。
这是一个基于宏的解决方案,它将在最后一列中具有相同数字的行周围放置边框。我假设您的数据在A:D列中。
要使用此宏,只需单击列表中的任何单元格,然后触发宏。
作为快速指南:
AddBorders
是主要的宏,它只是循环遍历最后一列中的所有单元格,并在边框合适时计算出来AddBorder
是一个添加边框的简短例程。作为奖励,AddBorder
从Excel 56的调色板中选择一种随机颜色,以便每个边框都有不同的颜色,以便于查看
Sub AddBorders()
Dim startRow As Integer
Dim iRow As Integer
startRow = 1
For iRow = 2 To ActiveCell.CurrentRegion.Rows.Count
If WorksheetFunction.IsNumber(Cells(iRow + 1, 4)) Then
If Cells(iRow, 4) <> Cells(iRow - 1, 4) Then
AddBorder startRow, iRow - 1
startRow = iRow
End If
Else
AddBorder startRow, iRow
End If
Next iRow
End Sub
Sub AddBorder(startRow As Integer, endRow As Integer)
Dim borderRange As Range
Dim randomColor As Integer
randomColor = Int((56 * Rnd) + 1)
Set borderRange = Range("A" & startRow & ":D" & endRow)
borderRange.BorderAround ColorIndex:=randomColor, Weight:=xlThick
End Sub
答案 2 :(得分:0)
我推出了这个解决方案,它在我的Excel 2010上很奇怪:/ 我无法在2003年进行测试,所以如果没问题,请告诉我。
Sub PaintBorder()
Dim iRow As Integer
iRow = 1
Dim strTemp As String
strTemp = Range("D" & iRow).Value
Dim strPrev As String
Dim sectionStart As Integer
sectionStart = 1
Do
strPrev = strTemp
strTemp = Range("D" & iRow).Value
If strPrev <> strTemp Then
ActiveSheet.Range(Cells(sectionStart, 1), Cells(iRow - 1, 4)).BorderAround xlSolid, xlMedium, xlColorIndexAutomatic
sectionStart = iRow
End If
iRow = iRow + 1
Loop Until strTemp = vbNullString
End Sub
答案 3 :(得分:0)
您是否只是想让人眼更具可读性?如果是这样,我建议交替使用背景颜色。例如,每次第4列中的数字发生变化时,背景颜色将从白色变为蓝色,反之亦然。我一直这样做:
制作一个附加栏目E.由于您的参考栏是D,请输入:
的 = MOD(IF(D5&LT;&GT; D4,E4 + 1,E4),2)强>
(即如果该行的列D与最后一行的D不同,则从0变为1或1变为0)
隐藏列,以便最终用户看不到它。
制作2个条件公式。如果隐藏值为0,则第一个将行颜色更改为白色。如果隐藏值为1,则第二个将其更改为蓝色。
没有宏。没有VBA编码。只有1个隐藏列和一些条件公式。即使您的列D正在跳过数字,颜色仍应正确交替:)
(我每天在XL 2003上使用它。我希望它适用于2007年)