急!!求判断一个5位数的个,十,百,千,万位分离后组合的EXCEL函数

EXCLE表格中,从0到9共10个数字中,随机组合成5位数,现判定在个,十,百,千,万位的数字,根据不同情况输出判断结果,以下有6种情况:1、全部不相同,输出A;2、1个二重数和3个单号数,输出B;3、2个二重号和1个单号数,输出C;4、1个三重数和2个单号数,输出D;5、1个三重数和1个二重数,输出E;6、1个四重数和1个单号数,输出F。
情况举例:
1、12345,输出A;
2、22345, 输出B;
3、22335, 输出C;
4、22234, 输出D;
5、22233,输出E;
6、22223,输出F.

定位B1,定义三个名称:

_min=MIN(LEN(SUBSTITUTE($A1,MID($A1,ROW(A$1:A$5),1),"")))

_max=MAX(LEN(SUBSTITUTE($A1,MID($A1,ROW(A$1:A$5),1),"")))

_assi=SUM((LEN(SUBSTITUTE($A1,MID($A1,ROW(A$1:A$5),1),""))=3)*1)

然后在B1输入公式:

=VLOOKUP(_min+_max+_assi,{8,"A";9,"B";11,"C";6,"D";7,"E";5,"F"},2,0)

下拉既可,效果如图:附件可参考


温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-01-22
'EXCLE表格中,从0到9共10个数字中,随机组合成5位数,现判定在个,十,百,千,万位的数字
Public Function FuncA() As Long
Randomize
FuncA = 90000 * Rnd() + 9999
End Function
'根据不同情况输出判断结果,
'以下有6种情况:1、全部不相同,输出A;2、1个二重数和3个单号数,输出B;3、2个二重号和1个单号数,输出C;
'4、1个三重数和2个单号数,输出D;5、1个三重数和1个二重数,输出E;6、1个四重数和1个单号数,输出F。
Public Function FuncB(V As Long) As String
Dim CH As Integer, CH2 As Integer, DH As Integer, I As Integer, J As Integer
Dim D(1 To 5) As Integer, D2(1 To 10) As Integer
D(1) = V \ 10000
D(2) = (V Mod 10000) \ 1000
D(3) = (V Mod 1000) \ 100
D(4) = (V Mod 100) \ 10
D(5) = (V Mod 10)
For I = 1 To 4
For J = I + 1 To 5
If D(I) = D(J) Then CH = CH + 1
Next
Next
For I = 1 To 5
If D(I) Mod 2 = 1 Then DH = DH + 1
D2(D(I) + 1) = D2(D(I) + 1) + 1
Next
If CH = 0 Then
FuncB = "A"
Exit Function
End If
If CH = 1 And DH = 3 Then
FuncB = "B"
Exit Function
End If
If CH = 2 And DH = 1 Then
FuncB = "C"
Exit Function
End If
If CH = 3 And DH = 2 Then
FuncB = "D"
Exit Function
End If
CH = 0: CH2 = 0
For I = 1 To 10
If D2(I) = 2 Then CH = 1
If D2(I) = 3 Then CH2 = 1
Next
If CH2 = 1 And CH = 1 Then
FuncB = "E"
Exit Function
End If
CH2 = 0
For I = 1 To 10
If D2(I) = 4 Then CH2 = 1
Next
If CH2 = 1 And DH = 1 Then
FuncB = "F"
Exit Function
End If
FuncB = "以上情况都不是。"
End Function

使用时,在单元格中输入:=funcb(funca())
也可以是:如:在 A1 单元格输入:=funca() 在 其他 单元格输入:=funcb(a1)
等:追问

请问具体操作步骤是怎么样的呢?函数公式放在EXCEL哪里,可以调用出来呢?不懂操作,请仔细回答,非常感谢。

追答

按 ALT + F11 组合键,在打开的(VBA编辑器)窗口中选择菜单:插入→模块,在打开的主窗口(最大的)中输入以上代码。
注意,一定要确保允许运行宏。

追问

1、已保存公式到VBA编辑器,请问怎么确保允许运行宏?
2、怎么调用公式?你举的例子我不懂怎么操作可以使用出来。
请完整回答使用过程,好吗?我真的不懂操作EXCEL表格。

追答追问

1、判断的答案正确率太低,一半以上错误。估计对问题没有研究清晰。

2、最左列的数字不能自己输入,或不能引用。

虽然不太满意,还是谢谢你。

追答

1、判断的答案正确率太低,一半以上错误。估计对问题没有研究清晰。

是时间有点紧,有空的话可以仔细研究一下,另外,逻辑也有些复杂。.

 

2、最左列的数字不能自己输入,或不能引用。

都可以的,你可以试试。

 

程序已经修改,

你给出的逻辑有问题,如 92800,只有1个单号数,明显是不符合条件 B 的。

再如:87386,只有2个单号数,明显是不符合条件 B 的。

是不是条件 B 写错了,按你的结果,应该是:

2、1个二重数和不多于3个单号数,输出B;

追问

逻辑没有问题,这个单号数是说只有一个数字,没有重复,与二重数有区别的,不是说奇偶数,也不是单双数。

追答

知道了,再改一下。望采纳。

追问

2、1个二重数和3个单号数,输出B;
请增加对第二种情况的多个判断,对重复的数字进行数字判断大小,不是对全部数字进行判断。而且只是对第二种情况,即只有一对重复数,其余不用。0-4属于小数,输出B1,5-9属于大数,输出B2。
如:22345,重复的数是2,属于小数范围,输出B1;55678,重复的数是5,属于大数范围,输出B2。

追答本回答被提问者采纳
第2个回答  2015-04-14
假设数据在A列第1行开始,则在B列第一行输入以下公式
=LEN(A1)-LEN(SUBSTITUTE(A1,MID(A1,1,1),""))+LEN(A1)-LEN(SUBSTITUTE(A1,MID(A1,2,1),""))+LEN(A1)-LEN(SUBSTITUTE(A1,MID(A1,3,1),""))+LEN(A1)-LEN(SUBSTITUTE(A1,MID(A1,4,1),""))+LEN(A1)-LEN(SUBSTITUTE(A1,MID(A1,5,1),""))

在C列第一行输入以下公式
=IF(B1=5,"A",IF(B1=7,"B",IF(B1=9,"C",IF(B1=11,"D",IF(B1=13,"E",IF(B1=17,"F",""))))))

向下填充就可以得到你要的结果

解释:
在B列是一个统计数字,这个数字对应的是5,7,9,11,13,17
原理 是统计每个数字在这个字符串中出现的次数,以这个次数相加的结果得到不同的和,再用这个和判断是否属于你的要求。
LEN(A1)-LEN(SUBSTITUTE(A1,MID(A1,1,1),""))
这个是统计字符串中,第一个字符出现的次数。以此类推,把5个字符串相加的结果就是所说的那5种情况。

5时,统计每个数字只出现一次,各1次所以:1+1+1+1+1=5
7时,则表示有一个数字出现了2次,所以:2+2+1+1+1=7
9时,则表示有两个数字都出现了2次,另一个只出现了一次,所以:2+2+2+2+1=9
11时,则表示有一个数字出现了3次,另外两个各出现一次,所以:3+3+3+1+1=11
13时,则表示有一个数字出现了3次,另一个数字出现了两次,所以:3+3+3+2+2+=13
17时,则表示有一个数字出现了4次,另一个数字为1次,所以:4+4+4+4+1=17追问

2、1个二重数和3个单号数,输出B;
请增加对第二种情况的多个判断,0-4属于小数,输出B1,5-9属于大数,输出B2。
如:22345,输出B1;55678,输出B2。
急急急。请增加,谢谢。

追答

判断数字的大小用以上方法不凑效,你可以在D列中尝试以下公式

=IF(AND(ABS(MID(A1,1,1))>4,ABS(MID(A1,2,1))>4,ABS(MID(A1,3,1))>4,ABS(MID(A1,4,1))>4,ABS(MID(A1,5,1))>4),C2&"2",IF(AND(ABS(MID(A1,1,1))<5,ABS(MID(A1,2,1))<5,ABS(MID(A1,3,1))<5,ABS(MID(A1,4,1))<5,ABS(MID(A1,5,1))<5),C2&"1",""))

 

以上公式求的是当所有数字都大于4时,输入结果为C列的结果的第2种(全大),当所有的数字都小于5时,为第1种(全小)

追问

为什么有些数能判断出来大小,有些数没有判断结果呢?而且公式都一样的呀。

追答

你给你的要求是全大,或者全小,那些没有结果的,是大小兼有的数字

追问

不是的。你理解上有误,我说的是重复的数字进行数字判断大小,不是对全部数字进行判断。而且只是对第二种情况,即只有一对重复数,其余不用。
如:22345,重复的数是2,属于小数范围,输出B1;55678,重复的数是5,属于大数范围,输出B2。

相似回答