我试图在 Excel 列表单元格内查找所有连续的 16 个数字(没有空格),有没有办法搜索呢?
我希望它找到所有数字,总共 16 个,但忽略单元格中的所有其他文本
谢谢
这些数字并不总是相同的,所以我不能按 Ctrl F ...它是一串 16 个数字
答案1
下列用户定义函数 自定义函数将返回字符串中第一个连续 16 位数字:
Public Function SweetSixteen(s As String) As String
Dim L As Long, i As Long, CH As String, j As Long
L = Len(s)
j = 0
SweetSixteen = ""
For i = 1 To L
CH = Mid(s, i, 1)
If CH Like "[0-9]" Then
SweetSixteen = SweetSixteen & CH
j = j + 1
If j = 16 Then Exit Function
Else
j = 0
SweetSixteen = ""
End If
Next i
End Function
如果有多个有效子字符串,则仅返回第一个。如果没有有效子字符串,则返回 Null。如果子字符串有超过 16 位数字,则仅返回前 16 位。
以下是一些示例:
用户定义函数 (UDF) 非常容易安装和使用:
- ALT-F11 打开 VBE 窗口
- ALT-I ALT-M 打开新模块
- 粘贴内容并关闭 VBE 窗口
如果您保存工作簿,UDF 将随之保存。如果您使用的是 2003 之后的 Excel 版本,则必须将文件保存为 .xlsm 而不是 .xlsx
要删除 UDF:
- 调出如上所示的 VBE 窗口
- 清除代码
- 关闭 VBE 窗口
要从 Excel 使用 UDF:
=SweetSixteen(A1)
要了解有关宏的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
有关 UDF 的详细信息,请参阅:
http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx
必须启用宏才能使其工作!