excel - 提取字符串中的预定义名称
问题描述
我有一个信息栏。我需要检查每个单元格的内容以查看哪个用户帐户发送了该信息。每个单元格中的文本通常包含用户的姓名,但没有设置格式。
我有所有用户名的列表(命名范围“帐户”)。
我们在每个单元格中提取用户名的计划是使用自定义 Excel VBA 函数来:
- 查找所有用户名的最小和最大文本长度(以最小化要检查的提取文本的长度)
- 循环遍历单元格内容,将其提取为不同提取长度的各种提取文本)
- 使用带有用户名列表的 Vlookup 比较各种提取的文本(来自单元格内容)
- 如果单元格中提取的文本与用户名匹配,则将它们保存到一个值中
- 如果一个单元格中有多个匹配的文本,仍然将它们保存到一个值中,并用特殊字符(“/”)分隔它们
该函数显示错误。
Function EXTRACTNICK(MinLen As Integer, MaxLen As Integer, checktext As String)
Dim i As Integer
Dim textLen As Integer
Dim extractText As String
Dim Str As String
Str = ""
For textLen = MinLen To MaxLen
For i = 1 To (Len(checktext) - textLen + 1)
extractText = Mid(checktext, i, textLen)
If IsError(WorksheetFunction.VLookup(extractText, Range("Accounts"), 1, False)) Then
Str = Str
Else
Str = Str & " / " & extractText
End If
Next i
Next textLen
ExtractNickName = Str
End Function
解决方案
在照片中,假设我的黄色范围等于您命名的范围Accounts
Option Explicit
Public Function Extracting(name As Range) As String
Dim Arr, i As Long
Arr = Sheets("Sheet1").Range("A1:A10").Value
For i = LBound(Arr) To UBound(Arr)
If InStr(name, Arr(i, 1), 0) Then
Extracting = Extracting & Arr(i, 1) & "/"
End If
Next i
If Extracting = "" Then
Extracting = "No Users Found"
Else
Extracting = Left(Extracting, Len(Extracting) - 1)
End If
End Function
推荐阅读
- python - pyqt5 "AttributeError: type object 'Window' has no attribute label" 但它有吗?
- microsoft-graph-api - 从客户端调用时,Microsoft 图形转换内容端点失败
- python-3.x - 在 url 前添加额外的字符串
- excel - 运行时错误 438:此对象不支持此属性或方法”
- angular - Angular 控制器未在浏览器中加载
- intellij-idea - IntelliJ 没有使用正确的插件注册文件类型
- javascript - 在 laravel 项目上测试 API 时如何绕过身份验证级别?
- php - htmlspecialchars() 期望参数 1 是字符串,给定数组 - Laravel
- java - Java 序列化 vs Hadoop 序列化 vs Spark 序列化
- selenium-chromedriver - 要单击的按钮的 Selenium 状态