第1个回答 2019-03-19
如果原始数据在A1:A100,B1中输入
=IF(MIN(MMULT(FIND(MID(A1,{1,2,3},1),MID("012345678901",ROW($1:$10),3)&1234567890),{1;1;1}))=6,"顺子","非顺子")
下拉,就行了。
介绍一个思路,先人工制造一些辅助片段,=MID("012345678901",ROW($1:$10),3)
=MID("012345678901",{1;2;3;4;5;6;7;8;9;10},3)
{"012";"123";"234";"345";"456";"567";"678";"789";"890";"901"}
凡是连号的,都是三个数字都能在其中一个片段中全部找到的,
=MID(A1,{1,2,3},1)
=MID(201,{1,2,3},1)
={"2","0","1"}
这个就是把每个三位数的每一个都取出来,以A1的201为例子。
FIND({"2","0","1"},{"012";"123";"234";"345";"456";"567";"678";"789";"890";"901"}&1234567890),{1;1;1})
就是用三个数字在每个片段中都位置,得到结果为
=FIND({"2","0","1"},{"012";"123";"234";"345";"456";"567";"678";"789";"890";"901"}&1234567890)
=FIND({"2","0","1"},{"0121234567890";"1231234567890";"2341234567890";"3451234567890";"4561234567890";"5671234567890";"6781234567890";"7891234567890";"8901234567890";"9011234567890"})
后面都拼上1234567890,就是为了不会出现错误值,使每个查找都有个结果,反正如果没有,找到的都至少是4或以上了
={3,1,2;2,13,1;1,13,4;5,13,4;5,13,4;5,13,4;5,13,4;5,13,4;5,3,4;5,2,3}
=MMULT({3,1,2;2,13,1;1,13,4;5,13,4;5,13,4;5,13,4;5,13,4;5,13,4;5,3,4;5,2,3},{1;1;1})
这个就是利用矩阵求和的方法,把分散的每三个数的位置都再求和出来。
{6;16;18;22;22;22;22;22;12;10}
MIN({6;16;18;22;22;22;22;22;12;10})
=6
只有查找位置分别为1、2、3,1+2+3,才会出现6,如果有1个6,就代表它符合其中一个片段,其它的任意结果,都会大于6。本回答被提问者采纳
第2个回答 2019-03-19
B1单元格写公式:
=IF(ISERROR(FIND(TEXT(SUM(SMALL(--MID(A1,ROW($A$1:INDEX(A:A,LEN(A1))),1),ROW($A$1:INDEX(A:A,LEN(A1))))*10^(LEN(A1)-ROW($A$1:INDEX(A:A,LEN(A1))))),REPT("0",LEN(A1))),"0123456789089019")),"非顺子","顺子")
然后选定B1单元格后鼠标点击进去上面的公示栏,然后按Ctrl+Shift+Enter/回车三键(按住Ctrl+Shift两键,然后按Enter/回车),直至公式首尾出现{ },然后向下拖动填充B1单元格公式到B列下面的单元格。
第4个回答 2019-03-19
在B1单元格写入公式:
=IF(OR($B1=901,$B1=109,$B1=890,$B1="098",AND(ABS(LEFT($B1,1)-MID($B1,2,1))=1,ABS(MID($B1,2,1)-RIGHT($B1))=1,ABS(LEFT($B1)-RIGHT($B1))=2)),"顺子","非顺子")
然后将鼠标放到B1单元格右下角,下拉公式。