如何最大程度地着色。 Excel 中的 2 个连续值不使用 VBA?

问题描述 投票:0回答:3

我不知道如何在不使用 VBA 的情况下在 Excel 表格中格式化连续的相同(分别为偶数)值。 条件格式应仅对连续值和 进行着色 全 0 或全偶数,当有 不超过 2 时。

答:身份证 B:二进制 C:计数
1 1 1
2 0 2
3 0 2
4 1 3
5 0 4
6 0 4
7 0 4
8 1 5
9 1 5

我尝试使用以下格式进行格式化:

=COUNTIF(C1:C9, C1) < 3
,但它也会为 1 和
C6:C7
着色,即使有超过 2 个。

我也尝试过

=AND( COUNTIF(C1:C9,C1) < 3, ISEVEN(C1:C9) )
,但后来它什么也没变色。 我可以用空单元格替换 0,这样我就可以检查
ISEMPTY(B1:B9)
,但它又没有任何颜色。使用 $ 设置绝对值也不会改变任何内容。 格式化重复项也会给三元组着色,这对我来说也不起作用。

=OR(COUNTIF($C$1:$C$9,C1) = 1, COUNTIF($C$1:$C$6,C1) = 2)
到目前为止有效,但也为 1 着色(不均匀)。
=AND(OR(COUNTIF($C$1:$C$9,C1) = 1, COUNTIF($C$1:$C$6,C1) = 2), ISEVEN($C$1:$C$9))
不起作用。

=AND(OR(COUNTIF($C$1:$C$9,C1) = 1, COUNTIF($C$1:$C$6,C1) = 2), $B$1:$B$9 <> 1)
也不起作用。

到目前为止我唯一的解决方案是使用 2 个格式化规则:

  1. 颜色
    =OR(COUNTIF($C$1:$C$9,C1) = 1, COUNTIF($C$1:$C$6,C1) = 2)
  2. 不要上色
    =$B$1:$B$9 = 1

但我认为这很糟糕。 我花了几个小时研究它,也许我错过了一些非常明显的东西。

我不允许使用 VBA,因此这不是一个选项。

编辑:我的2.规则解决方案可以简化为:

  1. 颜色
    =COUNTIF($C$1:$C$9,C1) < 3
  2. 不要上色
    =$B$1:$B$9 = 1

我仍然很困惑为什么两者结合起来不起作用:

AND(COUNTIF($C$1:$C$9,C1) < 3; $B$1:$B$9 <> 1)

EDIT2:我知道为什么它不起作用。不要用绝对值范围

<>1
检查
$B$1$:$B$9
解决方案:
B1 <> 1
然后循环遍历。

现在将两部作品结合起来:

=AND( COUNTIF($C$1:$C$9, C1) < 3, B1 <> 1)

excel excel-formula conditional-formatting
3个回答
2
投票

我看不到二进制数的简单答案。您有两种情况:

(1) 当前单元格为零,前一个单元格为 1,下一个单元格为零,下一个单元格为 1。

(2) 当前单元格为零,前一个单元格为零,前一个单元格为 1,下一个单元格为 1。

但是第一对数字是一种特殊情况,因为没有先前的单元格。

严格来说,最后一对数字也是一种特殊情况,因为没有后续单元格。

=OR(AND(ROW()=1,B$1=0,B$2=0,B$3=1),AND(ROW()=2,B$1=0,B$2=0,B$3=1),AND(B1=0,B1048576=1,B2=0,B3=1),AND(B1=0,B1048576=0,B1048575=1,B2=1))

我使用了这样一个事实,即您可以在条件格式中将范围换行到工作表的末尾(B1048576)。

添加范围末尾有两个零的情况的条件:

=OR(AND(ROW()=1,B$1=0,B$2=0,B$3=1),
AND(ROW()=2,B$1=0,B$2=0,B$3=1),
AND(B1=0,B1048576=1,B2=0,OR(B3=1,B3="")),
AND(B1=0,B1048576=0,B1048575=1,OR(B2=1,B2="")))

如果表格的最后几行有东西,即使这样也可能会出错,所以我想绝对安全:

=OR(AND(ROW()=1,B$1=0,B$2=0,B$3=1),
AND(ROW()=2,B$1=0,B$2=0,B$3=1),
AND(Row()>1,B1=0,B1048576=1,B2=0,OR(B3=1,B3="")),
AND(Row()>2,B1=0,B1048576=0,B1048575=1,OR(B2=1,B2="")))

较短:

=OR(AND(ROW()<=2,B$1+B$2=0,B$3=1),
AND(B1+B2=0,B1048576=1,OR(B3=1,B3="")),
AND(B1+B1048576=0,B1048575=1,OR(B2=1,B2="")))

0
投票

不是最干净的寺庙,但它确实有效。您只需将数据移至下方 1 行,因此标题将位于第 2 行,数据将位于第 3 行,此公式即可生效:

=IF(AND(B3=B4,B3<>B5),IF(AND(B4=B3,B4<>B2),TRUE,FALSE),IF(AND(B3=B2,B3<>B1),IF(AND(B3=B4,B3<>B5),FALSE,TRUE),FALSE))


0
投票

这种方法怎么样(Office 365):

=LET(range,B$1:B$9, 
     s,IFERROR(TRANSPOSE(INDEX(range,ROW()+SEQUENCE(5,,-2))),1),
     t,TEXTJOIN("",,(s=INDEX(range,ROW()))*ISEVEN(s)),
IFERROR(SEARCH("0110",t)<4,IFERROR(SEARCH("010",t)=2,FALSE)))

它创建一个包含 5 个值的数组

s
,起始点是范围的当前行,添加上面和下面的 2 个值。如果该值超出范围,它将用
1
替换错误。

检查数组

s
是否为偶数(TRUE/FALSE、IFERROR 创建的值不均匀)以及值是否等于范围中当前行的值 (TRUE/FALSE)。

这两个布尔值相乘,当两个值为 TRUE 时创建 1,否则创建 0。

将这些值连接起来并检查是否在范围的第二个或第三个位置中找到 2 个连续的 1(被 0 包围)(如果找到两个偶数连续相等的数字,就会出现这种情况), 如果出错,它将查看是否找到唯一的偶数(1 在第二位置被 0 包围)。

PS 我无法测试条件格式是否允许您将范围输入为

B:B
而不是
B$1:B$9
(在移动设备上工作),但这会使其更加动态,因为这样您可以轻松扩展条件范围。

© www.soinside.com 2019 - 2024. All rights reserved.