在第4个条目上进行条件格式设置?


0

我知道如何更改重复条目的单元格颜色,但是如何/可以在每第4个条目上更改颜色?值将是一个未知的数字和字母组合,希望每输入4次高亮一次。

大家好,谢谢您的支持,我在下面链接了一个我希望完成的表格看起来像的例子。

我手动突出显示了字母/数字组合C020,G020,B004和F028的第4个重复

如您所见,重复不一定发生在同一行或4列之后。

http://s000.tinyupload.com/?file_id=56226468952646159686


这是否意味着不应突出显示第5个重复?它应突出显示4个重复,然后突出显示8个重复,依此类推?
patkim

您可以提供示例数据吗?请查看“ 如何提问”并参加我们的导游,以了解如何改善您的问题。
Burgi

谢谢pat2015,这是正确的,不会突出显示第5至第7,会突出显示第8,依此类推
James

您正在使用什么程序?您是否看过测试行号是否为4的倍数?
fixer1234 '18

嗨fixer1234我使用的是Excel 2016,相关数​​据在灰色列中,重复可能不会持续15天/列,可能会在7日或10日等发生,因此不统一。目前,我们正在使用2张Excel表格并排打开,并手动检查每个条目以突出显示相同数据的第4个事件。
詹姆斯

Answers:


0

我不明白究竟你想要什么,因为你所提供的示例电子表格似乎不具有任何与你的问题。您说“相关数据在灰色列中”,但在灰色列中看不到任何重复的值。您是说“ RETURN”,“ RETURN / DC”,“ TOTAL”和“ TOTAL / DC”在变灰的栏中专门重复吗?

但是,您以(令人困惑/不清楚)的叙述形式提供的数据给了我一些有用的东西。我假设数字在行1中。从检测重复项的技术开始:

=COUNTIF($A1:B1,B1)

它计算的时间中值数这个至今细胞已经出现在该行中,直至并包括当前单元格。对于第一次出现的值,该值为1;对于重复项,该值为2或更大。但是,您不想测试此计数是否大于1。您想测试它是否是4的倍数。所以测试

=MOD(COUNTIF($A1:B1,B1),4)=0

从第二个单元格开始,将上述公式用作条件格式

在下面,

  • 第1行是您的数据(来自问题),是根据上面的第二个公式有条件地格式化的,
  • 第2行是上面的第一个公式,并且
  • 第3行是上面的第二个公式。

具有OP数据的电子表格

因此,第2行显示第1行中的重复次数,第3行显示第2行是4的倍数的列(这些是第1行着色的列)。


嗨,斯科特,谢谢您的帮助,上面第一行看起来最接近我想要的内容。我已经在上面的原始问题中发布了一个具有预期结果的链接。
詹姆斯

0

根据我的理解,我建议一个解决方案,该解决方案只使用一点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并将此格式绘制到所有适用的数据列。

在此处输入图片说明

注意。

  • Excel可能对可以传递给UDF的参数数量有限制。我不太确定如果声明为,是否以及如何应用ParamArray as Variant
  • 我建议您首先在测试工作表中使用模拟各种条件的示例数据对其进行测试,以确认它可以按预期工作,然后再将其应用于生产表。
  • 如果您仍然遇到任何问题或有任何错误,请在此处进行更新,如果时间允许,我将尝试进行修复。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.