用excel函数怎么实现数字排序?

如题所述

【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函数嵌套。

温馨提示:答案为网友推荐,仅供参考
相似回答