【1】先上效果图:
【2】步骤
先输入四个公式:
E2=IF(F2+G2+H2=0,1,0)
F2=IF(ISNUMBER(SEARCH(TEXT(LARGE(A2:D2,1)*10+LARGE(A2:D2,2),"00"),"987654321090")),1,IF(ISNUMBER(SEARCH(TEXT(LARGE(A2:D2,2)*10+LARGE(A2:D2,3),"00"),"987654321090")),1,IF(ISNUMBER(SEARCH(TEXT(LARGE(A2:D2,3)*10+LARGE(A2:D2,4),"00"),"987654321090")),1,0)))
G2=IF(ISNUMBER(SEARCH(TEXT(LARGE(A2:D2,1)*100+LARGE(A2:D2,2)*10+LARGE(A2:D2,3),"000"),"9876543210980910")),1,IF(ISNUMBER(SEARCH(TEXT(LARGE(A2:D2,2)*100+LARGE(A2:D2,3)*10+LARGE(A2:D2,4),"000"),"9876543210980910")),1,0))
H2=IF(ISNUMBER(SEARCH(TEXT(LARGE(A2:D2,1)*1000+LARGE(A2:D2,2)*100+LARGE(A2:D2,3)*10+LARGE(A2:D2,4),"0000"),"9876543210987098109210")),1,0)
再选择上述四个输入了公式的框(E2-H2),下拉整个E-H四列填充公式,完成。
【3】所用原理及函数详细说明
①、先将四个字符排序组成数字由大到小的四位数,所用函数:LARGE(array,k),其中:
array:指所选区域,此处选择A2-D2的四个框;
k:指从大到小第几个数。
比如在H2的公式中有:
LARGE(A2:D2,1)*1000+LARGE(A2:D2,2)*100+LARGE(A2:D2,3)*10+LARGE(A2:D2,4)
即:最大的数放千位,第二的数放百位,第三的数放十位,第四的数放个位。
所以上述公式结果是四位数:9754。
②、将数字形式转换成字符串形式,所用函数:TEXT(value,format_text),其中:
value:指需要转换的数字;
format_text:指转换后的格式,有很多标准,可以自行百度,此处用到的就是以下三种:
"0000":四位数字的字符串;
"000":三位数字的字符串;
"00":两位数字的字符串;
③、在已经排好序的长字符串中查找是否包含第②步转换的字符串,所用函数:
SEARCH(find_text,within_text,[start_num])
find_text:必需,要查找的文本字符串;
within_text:必需,要在哪一个字符串查找;
[start_num]:从第几位开始查找,可以省略,省略的话就是从头开始查,此处省略了。
在H2框的公式中,我将within_text参数设置为:"9876543210987098109210",其中包含了所有连续四个数字且从大到小排列的形式,因为题主在15行中认为0978也是四连数,即0-9可以循环,所以我在“9876543210”后面又添加了“9870”“9810”“9210”三种可能性。
在F2框和G2框中也类似,添加了符合9与0连续的可能性。
④、判断SEARCH函数的结果找没找到,所用函数:ISNUMBER(value),其中:
value:需要判断是否是数字的参数;
因为SEARCH函数如果找到了就返回位置(数字),找不到就返回错误代码(字符串)。
所以我用ISNUMBER可以将SEARCH函数的结果转变成“TRUE”or“FALSE”。
⑤、用输出题主需要的结果1或0,所用函数:IF(logical_test,value_if_true,value_if_false),其中:
logical_test:需要判断的参数,必须是布尔值:“TRUE”or“FALSE”;
value_if_true:如果判断为TRUE,则返回这个结果,此处就是1;
value_if_false:如果判断为FALSE,则返回这个结果,此处就是0。
⑥、在E2框偷了个懒,直接利用F2\G2\H2的结果来判断,用一个IF函数搞定:
E2=IF(F2+G2+H2=0,1,0),如果F2+G2+H2=0(两连、三连、四连都没有),那就返回1;否则返回0。
⑦、F2\G2框比H2框不同的有两处:
一是:F2框只判断两位数,G2框只需要判断三位数,H2框需要判断的是四位数。
二是:H2框只有一种四位数,但G2框有两种三位数:第123位、第234位;F2框有三种两位数:第12位、第23位、第34位。
所以,G2框用了两个IF函数嵌套,F2框用了三个IF函数嵌套。