excel - 提取单元格中唯一的 7 位字符串...Excel
问题描述
在 excel 中,我想用一串数字在单元格中提取唯一的 7 位数字。提取前 7 个唯一数字后(放置在相邻列中),接下来的 7 个唯一数字从前一个唯一 7 位字符串的最后一个数字开始。
例如(我已插入分隔符以查看以下字符串应从何处开始)
120381634|782540251|996314825168993247556112006387453961284587863952145786329520048752123666520473015444
1st (unique 7-digits) 1203864
2nd 7825401
解决方案
此 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,... 因为它被拖到列中。它也可以是硬编码的数字。
推荐阅读
- azure-devops - 如何将 azure devops sprint 配置为数天而不是数小时
- visual-studio - VS2017 nuget一直在错误位置搜索包
- java - 如何在 Java 中设计以下数据结构
- sequelize.js - Sequelize - 如何选择 COUNT(*) 并进行 GROUP BY?
- python - 如何使用 tkinter 正确显示 numpy int16 数组?
- netsuite - NetSuite SuiteScript 2.0 如何从 UserEvent 按钮创建银行存款单(suitelet 功能)
- excel - vArray 值未从 VBA 中的上一个循环中清除
- python - 如何防止 Keras 顺序模型中的过度拟合?
- angular - Nativescript gradle 构建失败并显示“找不到资源 xml/network_security_config”
- spring - 为什么 Spring Boot 4“自定义错误页面”失败 404?