列值更改时更改底纹(Microsoft Excel)
道格的数据表包括一列零件号。此数据按零件号列排序。零件编号不是唯一的;例如,某些零件号在表格中出现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 [更改列值时更改底纹]。