我知道如何更改重复条目的单元格颜色,但是如何/可以在每第4个条目上更改颜色?值将是一个未知的数字和字母组合,希望每输入4次高亮一次。
大家好,谢谢您的支持,我在下面链接了一个我希望完成的表格看起来像的例子。
我手动突出显示了字母/数字组合C020,G020,B004和F028的第4个重复
如您所见,重复不一定发生在同一行或4列之后。
我知道如何更改重复条目的单元格颜色,但是如何/可以在每第4个条目上更改颜色?值将是一个未知的数字和字母组合,希望每输入4次高亮一次。
大家好,谢谢您的支持,我在下面链接了一个我希望完成的表格看起来像的例子。
我手动突出显示了字母/数字组合C020,G020,B004和F028的第4个重复
如您所见,重复不一定发生在同一行或4列之后。
Answers:
我不明白究竟你想要什么,因为你所提供的示例电子表格似乎不具有任何与你的问题。您说“相关数据在灰色列中”,但在灰色列中看不到任何重复的值。您是说“ RETURN”,“ RETURN / DC”,“ TOTAL”和“ TOTAL / DC”在未变灰的栏中专门重复吗?
但是,您以(令人困惑/不清楚)的叙述形式提供的数据给了我一些有用的东西。我假设数字在行1中。从检测重复项的技术开始:
=COUNTIF($A1:B1,B1)
它计算的时间中值数这个至今细胞已经出现在该行中,直至并包括当前单元格。对于第一次出现的值,该值为1;对于重复项,该值为2或更大。但是,您不想测试此计数是否大于1。您想测试它是否是4的倍数。所以测试
=MOD(COUNTIF($A1:B1,B1),4)=0
从第二个单元格开始,将上述公式用作条件格式 。
在下面,
因此,第2行显示第1行中的重复次数,第3行显示第2行是4的倍数的列(这些是第1行着色的列)。
根据我的理解,我建议一个解决方案,该解决方案只使用一点VBA UDF和一个Helper Column。
下面给出一个简化的图纸示例。相关数据在C,E,G和I列中。每列的右侧是一个Helper列,您可以根据需要将其隐藏。
首先,在工作表中按ALT+ F11访问VBA编辑器。从“插入”菜单插入模块,然后将以下UDF(用户定义的功能)代码粘贴到其中。
Function prmarr(ParamArray arg()) As Variant
Dim arr1
cnt = 0
For i = LBound(arg) To UBound(arg)
cnt = cnt + arg(i).Rows.Count ' get total rows from all ranges
Next i
ReDim arr1(cnt) ' re dim the array for those many total rows
cnt = 0 ' reuse the counter now
'create a one dimentional list of array from all of the above ranges
For i = LBound(arg) To UBound(arg)
For Each cell In arg(i)
arr1(cnt) = cell.Value
cnt = cnt + 1
Next cell
Next i
prmarr = arr1 ' pass this array as return parameter
End Function
请注意,这是非常基本的VBA代码,并且代码中没有任何验证或错误检查。如果传递水平数组或重叠数组或多维数组,则可能会失败。假定只将一个列数组传递给它即可正常工作。
此函数接受可变数量的列数组范围,并返回一个一维数组,其中包含该数组中的所有单元格值,自从数据第一列的起始单元格开始,我们将使用该数组来计算当前值出现的总数。
由于您的Excel中有VBA代码,因此您需要将文件另存为.XLSM启用宏的Excel工作表。
在D1中,输入以下公式并将其向下拖动到所需的行。
=COUNTIF($C$1:C1,C1)
现在,随着您在后续的“帮助者专栏”中的前进,每个“帮助器”列都需要对公式进行一些修改。尽管结构保持不变,但参数数量增加了。
在F2中,输入以下公式,然后从公式栏中按CTRL+ SHIFT+ ENTER创建数组公式。Excel现在将公式用大括号括起来,以表明它是一个数组公式。此步骤需要创建一个数组公式,否则将产生错误的结果。
=SUM(IF(prmarr(C$1:C$9,E$1:E1)=E1,1,0))
了解这个公式。您要将C1:C9和E $ 1:E1作为参数传递给UDF,即先前列+当前列的第一个值,直到测试条件值,然后检查是否与当前单元格匹配。如果是,SUM将产生从第一列开始的那个值的总数。向下拖动到所需的行。
同样,现在H1中的数组公式公式变为
=SUM(IF(prmarr(C$1:C$9,E$1:E$9,G$1:G1)=G1,1,0))
等等。
完成所有列的操作。
现在是条件格式部分。
选择第一个单元格,在这种情况下为C1。转到条件格式->新规则->使用公式来确定要格式化的单元格。
现在在规则中输入以下公式
=MOD(D1,4)=0
选择您选择的背景色,然后单击“确定”以将格式应用于单元格C1。
现在,当选择C1时,双击Format Painter并将此格式绘制到所有适用的数据列。
注意。
ParamArray as Variant