道格的数据表包括一列零件号。此数据按零件号列排序。零件编号不是唯一的;例如,某些零件号在表格中出现3次,而其他零件号出现5次。 Doug希望格式化表格,以便表格的行具有“绿色条”效果。

例如,前五行可能具有相同的部件号,因此Doug希望这些行以绿色阴影显示。接下来的两行具有不同的部件号,因此他希望这些行没有绿色阴影。接下来的三行具有下一个部件号,因此它们应该再次变为绿色,依此类推。每次零件编号更改时,行的阴影(绿色或非绿色)都应更改。

完成此任务的一种简单方法是创建一个帮助列,该列根据列A中的零件号显示0或1。例如,假设您要将您的助手列放在Z列中。您可以将以下公式放在单元格Z2中:

=IF(A2=A1,Z1,1-Z1)

为数据表中的每一行将公式向下复制到Z列。完成后,Z列将包含1或0,仅当A列中的部件号更改时才切换。然后,您可以将Z列中的值用作条件格式的控制值。您所需要做的就是以格式设置公式,以便如果Z列包含1,则您的单元格为绿色。

您应该注意,一旦设置了条件格式并使其正常工作,就可以隐藏Z列,以免对使用数据表的任何人造成干扰。

如果由于某种原因而无法使用帮助器列,那么可以在条件格式本身中使用一个很酷的公式。只要确保您的数据表按A列(零件号)排序,然后选择表中的所有单元格即可,任何列标题除外。然后定义使用以下公式的条件格式:

=MOD(SUMPRODUCT(--(($A$1:INDIRECT(ADDRESS(ROW()-1,1,3,1))

=$A$2:INDIRECT(ADDRESS(ROW(),1,3,1)))=FALSE)),2)

请记住,这是在条件格式设置规则中输入的单个公式,全部一行。该公式假定零件号在A列中,并且数据表在单元格A2中开始。

此外,如果您删除数据表中的任何行,则需要对数据表中的所有单元格重新应用条件格式。

最后,您可以编写任意数量的宏来应用格式。您需要做的就是让宏逐步进入A列中的单元格,确定零件号是否更改,然后根据发现的内容应用正确的格式。这是一个示例:

Sub ShadeRows()

Dim ThisOrder As Long     Dim PrvOrder As Long     Dim LastRow As Long     Dim Clr As Integer     Dim R As Long

LastRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row

' Enter desired color codes here     ' (24 is Lavender, 35 is Light Green)

RwColor = Array(24, 35)



Clr = 0  ' Used to toggle between the two colors

For R = 2 To LastRow         ThisOrder = Cells(R, 1).Value         PrvOrder = Cells(R - 1, 1).Value         If ThisOrder <> PrvOrder Then Clr = 1 - Clr

' Select only the columns that are used         Range("A" & R & ":M" & R).Select         Selection.Interior.ColorIndex = RwColor(Clr)

Next R End Sub

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

链接:/ excelribbon-ExcelTipsMacros [点击此处在新的浏览器标签中打开该特殊页面]。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(10518)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较早菜单界面找到此技巧的版本:

链接:/ excel-Changing_Shading_when_a_Column_Value_Changes [更改列值时更改底纹]。