【紧急】求助大神!!!复杂的EXCEL表格公式

豹子:三个数字都相同;顺子:三个数字都相连,不分顺序(数字9、0、1相连),如123、321、901、546等;对子:三个数字中任意2个数字相同(不包括豹子),如001、112、696;半顺:三个数字中任意2个数字相连,不分顺序(不包括顺子、对子),如125、540、706、390;杂六:不包括豹子、对子、顺子、半顺,如157。如以上要求做出一个EXCEL表格公式,重要的是0和9也算连着的,三个数字分别用A1\A2\A3,一个单元格一个数字,公式,同时判断三个单元格内的数字。

E1输入:

=IF(AND(A1=B1:C1),"豹子",IF(OR(A1=B1:C1,C1=A1:B1),"对子",IF(COUNT(FIND(SUM(SMALL(A1:C1,{1,2,3})*10^{0,1,2}),9876543210980910)),"顺子",IF(COUNT(FIND(A1:C1&TRANSPOSE(A1:C1),98765432109)),"半顺","杂六"))))

ctrl+shift+回车下拉

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-07-31

用IF的笨办法…………写的也是心累

=IF(OR(COUNTIF(A2:C2,A2:C2)=3),"豹子",IF(OR(COUNTIF(A2:C2,A2:C2)=2),"对子",IF(OR(AND(SMALL(IF(A2:C2=0,10,A2:C2),{3,2})-SMALL(IF(A2:C2=0,10,A2:C2),{2,1})=1),AND(COUNTIF(A2:C2,{0,1,9})=1)),"顺子",IF(OR(SMALL(IF(A2:C2=0,10,A2:C2),{3,2})-SMALL(IF(A2:C2=0,10,A2:C2),{2,1})=1),"半顺","杂六"))))

三键

追问

你这个 0 1 2识别出半顺了。

追答

=IF(OR(COUNTIF(A2:C2,A2:C2)=3),"豹子",IF(OR(COUNTIF(A2:C2,A2:C2)=2),"对子",IF(OR(AND(SMALL(IF(A2:C2=0,10,A2:C2),{3,2})-SMALL(IF(A2:C2=0,10,A2:C2),{2,1})=1),AND(COUNTIF(A2:C2,{0,1,9})=1),AND(COUNTIF(A2:C2,{0,1,2})=1)),"顺子",IF(OR(SMALL(IF(A2:C2=0,10,A2:C2),{3,2})-SMALL(IF(A2:C2=0,10,A2:C2),{2,1})=1),"半顺","杂六"))))
再单独添加0 1 2 的顺子情况

第2个回答  2019-07-31

你的这个问题还应该包括890这样的顺子的吧!

按你的描述,假设3个数据是在A1、B1、C1单元格的,则可在D1单元格输入数组公式:

=IF(LEN(A1&B1&C1)=0,"",IF(A1=B1,IF(B1=C1,"豹子","对子"),IF(B1=C1,"对子",IF(OR(MAX(A1:C1)-MIN(A1:C1)=2,MAX(MOD(A1:C1+1,10))-MIN(MOD(A1:C1+1,10))=2,MAX(MOD(A1:C1+2,10))-MIN(MOD(A1:C1+2,10))=2),"顺子",IF(OR(SUMPRODUCT({1,-1}*LARGE(A1:C1,COLUMN(A:B)))=1,SUMPRODUCT({-1,1}*SMALL(A1:C1,COLUMN(A:B)))=1,SUMPRODUCT({1,-1}*LARGE(MOD(A1:C1+1,10),COLUMN(A:B)))=1,SUMPRODUCT({-1,1}*SMALL(MOD(A1:C1+1,10),COLUMN(A:B)))=1),"半顺","杂六")))))

记得是数组公式,输入或者粘贴完成必须同时按CTRL+SHIFT+ENTER这3个键结束,否则公式无效的!

追问

你这套代码,还行,但是识别也有乱。搞不懂。

追答

你要这样复制右拉啊?那就把公式里的A:B改成为:
$A:$B
即可

本回答被网友采纳
第3个回答  2019-07-31
命名有优先顺序的吧?如9、0、0,即是对子,又是半顺,该优先取哪个名?要把所有的名字按优先级列出来。
第4个回答  2019-07-31
条件太多了,代码编程可以处理!追问

=IF(LARGE(A1:C1,1)=SMALL(A1:C1,1),"豹",IF(OR(LARGE(A1:C1,1)=LARGE(A1:C1,2),SMALL(A1:C1,1)=SMALL(A1:C1,2)),"对",IF(OR(LARGE(A1:C1,1)-AVERAGE(A1:C1)=1,AND(LARGE(A1:C1,1)=9,LARGE(A1:C1,2)=1,SMALL(A1:C1,1)=0)),"顺",IF(OR(LARGE(A1:C1,1)-LARGE(A1:C1,2)=1,SMALL(A1:C1,2)-SMALL(A1:C1,1)=1),"半","杂"))))
这个可以,就是有时候会有BUG。0和9有时候判断不出来是连着的,我不知道是那里有问题。

相似回答