-1

在 excel 中,我想用一串数字在单元格中提取唯一的 7 位数字。提取前 7 个唯一数字后(放置在相邻列中),接下来的 7 个唯一数字从前一个唯一 7 位字符串的最后一个数字开始。

例如(我已插入分隔符以查看以下字符串应从何处开始)

120381634|782540251|996314825168993247556112006387453961284587863952145786329520048752123666520473015444

1st  (unique 7-digits) 1203864
2nd                    7825401
4

1 回答 1

3

此 udf 将允许您设置每个字符串的唯一字符的长度以及要返回的值:

Function UniqueSeven(str As String, lngth As Long, k As Long) As String

Dim dict As Object
Set dict = CreateObject("scripting.Dictionary")

Dim test() As Variant
ReDim test(1 To Len(str) / lngth)

Dim j As Long
j = 1
Dim i As Long
For i = 1 To Len(str)
        If dict.Count < lngth And i < Len(str) Then
            On Error Resume Next
                dict.Add Mid(str, i, 1), Mid(str, i, 1)
            On Error GoTo 0
        Else
            Dim key As Variant
            For Each key In dict.keys
                test(j) = test(j) & dict(key)
            Next key
            j = j + 1
            dict.RemoveAll
            dict.Add Mid(str, i, 1), Mid(str, i, 1)
        End If
Next i

UniqueSeven = test(k)

End Function

你会这样使用它:

使用 A1 中的字符串,将其放入单元格中:

=IFERROR(UniqueSeven($A$1,7,ROW(A1)),"")

并复制下来,直到你得到空白。

第二个参数是字符串输出的长度。我用作ROW(A1)计数器,所以它会返回 1,2,3,4,... 因为它被拖到列中。它也可以是硬编码的数字。

在此处输入图像描述

于 2018-08-25T18:46:30.080 回答