根据单元格值对特定组值/行进行条件格式化

根据单元格值对特定组值/行进行条件格式化

我有一些数据表,它们被分成了“行块”。正如您在图片上看到的,从 D 列 (A1) 开始,第一行有一些值,然后是 5 行空,第 7 行再次有值,依此类推...这就是我所说的行块,它们总是在相同的间隔内。

例子 我接下来想要实现的目标是:

  1. 第 I 列(D1)应该是我的“过滤器”列,我想在其中选择一些值,一个或多个并不重要。
  2. 当我选择了一些“值”时,数据会像在 Excel 表中一样正常过滤,但我希望能够始终保持匹配的行块可见,不仅是一行或两行,而是整个行块,即使 90% 是空白单元格或不是。其余的可以删除或隐藏,但可以在选择或取消选择时重新显示它们
  3. 重要的是始终保留这 6 行的块,或者如果值包含在其他块中,则可以保留两到三个块。当其他块中没有匹配项时,应该将其“隐藏”
  4. 我尝试使用 A、B 和 C 列等辅助列,但没有成功,也尝试以某种方式将它们合并,但没有成功。
  5. 当然,我添加了颜色来标记它们,但没有颜色也可以,重要的是过滤器 100%正确。

助手1:

=MOD(SUMPRODUCT(($D$5:$D5<>$D$4:$D4)*1);2)=0

这就是现在 CF 中的公式:

=$I5=$I$3

如果可以的话,我并不熟练掌握 VBA,但是从其他方面来看,我也看到可以使用 CF 来做到这一点...

答案1

我发现使用以下公式为 6 行“组”创建索引很有帮助:

=ROUNDUP((ROW()-1)/6,0)

在此处输入图片描述

我确信有几种方法可以完成下一部分,但这是我首先想到的方法。

计算与当前行属于同一组且 D 列中的值可以在 J 列的筛选器列表中找到的行数。由于筛选器列表可以包含多个单元格,因此这将返回一个长度与筛选器列表相同的数组,其中每个项目都是一个整数,表示组中该筛选项的数量。因此,如果组包含0528两次和0342一次,并且筛选器要查找05280342,则将COUNTIF返回{2,1}

我在这里使用TRANSPOSE来说明每行的结果。此公式位于 G 列:

=TRANSPOSE(COUNTIFS($E$2:$E$19,$E2,$D$2:$D$19,$J$1:$J$2)

在此处输入图片描述

因此,如果我只想要一个值来指示某一行已找到某些内容,我可以对该数组求和并将总和与 0 进行比较。如果总和大于零,则说明我在该组中找到了至少一个过滤项,然后可以对整个组进行过滤。

=SUM(COUNTIFS($E$2:$E$19,$E2,$D$2:$D$19,$H$1:$H$2))>0

请注意,这TRANSPOSE不是真正必要的,所以我将其删除了。

在此处输入图片描述

我们可能可以将组计算嵌入到过滤公式中,但我认为最好将其保留在原处,因为它可能对其他计算有用。

相关内容