我想做一个公式,当我在同一行中有3个连续的单元格,值为YES时,三个单元格的颜色相同?我有一张表,其中我有一个客户的目标,获取数据的人只需从下拉列表中选择是或否,我希望当他/她在E8、F8和G8中选择是时,这三个摄氏度会变成蓝色、红色或绿色。这样我就知道这个目标已经掌握了。我希望同一行中的其他单元格被锁定,这样在达到掌握标准后就不会收集数据。
在此处输入图像描述
我有一个第一部分的解决方案(用3个连续的YES给单元格着色(。关于锁定单元的第二部分,我认为没有VBA是不可行的。
以下是我所做的:屏幕截图Excel
我假设B3:I5
中有8列的3行中有YES/NO答案,并且单元格B1:I1
包含答案的级别(1到8(。列J和K需要为空。
1.在单元格L3
中放入一个公式,以获得3个YES行中第一个YES的排名,然后将公式下拉
以下是公式:
=SMALL(IF((IF(B3:I3="YES",B$1:I$1,0)+1=IF(C3:J3="YES",C$1:J$1,0))*(IF(C3:J3="YES",C$1:J$1,0)+1=IF(D3:K3="YES",D$1:K$1,0))=1,B$1:I$1,99999),1)`
解释:CCD_ 4是从连续的3〃序列中获得第一个YES的秩;是";。如果没有序列3 YES,则返回9999。
从3的序列中获取YES的秩的想法是:如果3个YES是连续的,那么:A(第一个YES+1的秩等于第二个YES的阶,以及B(第二个YES+1的秩相等于第三个YES。
我们检查条件A的8个答案:如果B3:I3={NO,YES,YES、NO、YES,NO,NO}并且单元格J3为空,则:
IF(B3:I3="YES",B$1:I$1,0)
返回{0,2,3,4,0,6,0}IF(B3:I3="YES",B$1:I$1,0)+1
返回{1,3,4,5,1,7,1,1}IF(C3:J3="YES",C$1:J$1,0)
返回{2,3,4,0,6,0,0,0}
因此(IF(B3:I3="YES",B$1:I$1,0)+1=IF(C3:J3="YES",C$1:J$1,0)
将返回8个答案的数组:{FALSE,TRUE,TRUEFALSE,FALSE,FALSE,FALSE}=>答案2和3满足条件A.
我们还检查了条件B,并对TRUE/FALSE数组进行乘积,以知道满足这两个条件的答案的秩。之后,我们使用函数SMALL((来获得第一个YES。
2.使用以下公式将条件格式设置在单元格B3中,并扩展到其他单元格(B3:I5(
只有当答案的等级等于L3
中第一个YES的等级,或者等于第一个YES+1的等级,或第一个YES+2的等级时,这才会格式化单元格。
=IF(OR(B$1=$L3,B$1=$L3+1,B$1=$L3+2),TRUE,FALSE)`