正在提取单元格中唯一的 7 位数字字符串...Excel
Extracting unique 7-digit string in a cell...Excel
在excel中,我想在一个包含一串数字的单元格中提取唯一的 7 位数字。在提取前 7 个唯一数字后(放置在相邻的列中),接下来的 7 个唯一数字从前一个唯一的 7 位字符串的最后一个数字开始。
例如(我插入了分隔符以查看以下字符串应该从哪里开始)
120381634|782540251|996314825168993247556112006387453961284587863952145786329520048752123666520473015444
1st (unique 7-digits) 1203864
2nd 7825401
此 udf 将允许您设置每个字符串的唯一字符的长度以及哪个值 return:
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,7,ROW(A1)),"")
然后向下抄写直到出现空白。
第二个参数是字符串输出的长度。我使用 ROW(A1)
作为计数器,所以它会 return 1,2,3,4,... 因为它被拖到列中。它也可以是硬编码数字。
在excel中,我想在一个包含一串数字的单元格中提取唯一的 7 位数字。在提取前 7 个唯一数字后(放置在相邻的列中),接下来的 7 个唯一数字从前一个唯一的 7 位字符串的最后一个数字开始。
例如(我插入了分隔符以查看以下字符串应该从哪里开始)
120381634|782540251|996314825168993247556112006387453961284587863952145786329520048752123666520473015444
1st (unique 7-digits) 1203864
2nd 7825401
此 udf 将允许您设置每个字符串的唯一字符的长度以及哪个值 return:
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,7,ROW(A1)),"")
然后向下抄写直到出现空白。
第二个参数是字符串输出的长度。我使用 ROW(A1)
作为计数器,所以它会 return 1,2,3,4,... 因为它被拖到列中。它也可以是硬编码数字。