EXCEL 在一串字数中,得出从第一个开始的第5个数字

比如我在B1 有112233 B2有 53126 那么,我怎么C1得出 从B1的 的那串数字开始,第5个数字是什么 前提是不能有重启的数字出现 按我上面的数字,得到的是6 应为得到的5个数字 是12356 那么第5个是6
我要在C1显示6

但是 有时候会在更多行中找
比如B1 有112233 B2 223411 B3 42312314 B4 42318
那么我得到的数字是12348 在C1显示8
请问有什么办法,得快速得到,5个不重复的数中第5个数字~~

谢谢大家
也有可能在B1就有12345 刚刚好5个不一样的数字

亲,这个比较复杂,所以做了一个自定义函数。支持数字、字符,可以指定范围,指定返回第几个不重复字符。

附件已上传。按“Alt+F11”打开VBA编辑窗口,在左侧模块上点右键,插入一个新模块,右边粘贴下面的代码。

用法:

=NON(数据区域, 第几个字符)

有两个参数,第一个是选择数据区域,第二个是指定返回第几个不重复的数字。如下图。

Function non(rng As Range, no As Long) As String
Dim rg As Range
Dim i As Long
Dim s As String
For Each rg In rng
    For i = 1 To Len(rg.Value)
        If Len(s) < no Then
            If InStr(s, Mid(rg.Value, i, 1)) = 0 Then
                s = s & Mid(rg.Value, i, 1)
            End If
        Else
            non = Right(s, 1)
            GoTo e:
        End If
    Next
Next
non = ""
e:
End Function

 

追问

谢谢您,还有一个衍生出来的问题,在请教您一下.
比如我
A1是0 那么B1是38760 那么我在C1用您给的这个函数到是的0 那么我想,如果
C1=A1的情况下,
C1 显示1 而不是你的函数得到的数字
否则显示空白~
如果在C1显示的是空白,我要在D1显示1
这样行吗?

追答

是这样的,因为这个自定义函数的第一个参数是一块区域,所以比较难区分哪个是您要比较的单元格。而且,如果改动规则本身,会失去普遍性。
我的建议是您把函数嵌套起来使用,例如:=IF(NON(A1:B1,5)=A1,1,"")
D1的公式:=IF(C1="",1,"")

换句话说,一个函数解决所有情况时很困难的。需要把函数配合起来使用。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-09-02
C1中输入
=MID(B1&B2&B3&B4,SMALL(IF(ISNUMBER(FIND(ROW(1:9),B1&B2&B3&B4)),FIND(ROW(1:9),B1&B2&B3&B4)),5),1)
同时按下CTRL+SHIFT+回车,输入数组公式,试试。
第2个回答  2014-09-02
=SMALL(--IF(MATCH(MID(B1&B2&B3&B4,ROW(INDIRECT("1:"&LEN(B1&B2&B3&B4))),1),MID(B1&B2&B3&B4,ROW(INDIRECT("1:"&LEN(B1&B2&B3&B4))),1),0)=ROW(INDIRECT("1:"&LEN(B1&B2&B3&B4))),MID(B1&B2&B3&B4,ROW(INDIRECT("1:"&LEN(B1&B2&B3&B4))),1),100000),5)
同时按下CTRL+SHIFT+回车,输入数组公式。
第3个回答  2014-09-02
用公式有些复杂,用VBA简单一些,要么把文件上传过来,编个VBA程序。追问

请问我要怎么把文件传给您呢

第4个回答  2014-09-02

=MID(A1,5,1)

相似回答