excel - 宏从单元格vba中获取大写字母
问题描述
对所有人来说都是美好的一天。我可以将此功能转换为宏吗?一键轻松控制多个文件
Public Function CreateShortcut(ByVal StrVal As String) As String
Dim i As Long, tVal As String
With CreateObject("VBScript.RegExp")
.Pattern = "[A-Z&/.]"
.Global = True
With .Execute(StrVal)
For i = 0 To .Count - 1
tVal = tVal & .Item(i)
Next i
End With
End With
CreateShortcut = tVal
End Function
问候
解决方案
提供您如何“尝试创建宏”的尝试对您是有益的,这样我们可以更好地将我们的想法与您的想法保持一致,但是,这可以使用正则表达式或各种其他方法来完成。
下面的方法确实使用正则表达式来执行这些匹配。
Option Explicit
Public Function CreateShortcut(ByVal StrVal As String) As String
Dim i As Long, tVal As String
With CreateObject("VBScript.RegExp")
.Pattern = "[A-Z&]"
.Global = True
With .Execute(StrVal)
For i = 0 To .Count - 1
tVal = tVal & .Item(i)
Next i
End With
End With
CreateShortcut = tVal
End Function
您可以像使用任何其他工作表函数一样使用上述函数:
=CreateShortcut(B2)
如果您愿意,欢迎您更改函数的名称,或者继续使用我在示例中使用的那个CreateShortcut()
。
我完全清楚 B4 单元格中“工程与部门”中的错字。这就是 OP 在问题中呈现他们的数据的方式,为了保持一致性,我选择保留它
重要的是要了解此代码不提供基本数据验证,例如防止重复匹配或确保字符串中甚至包含大写字母。这是您在项目中需要考虑的事情
RegEx 模式非常基本。
- 括号
[...]
是字符类括号。它的工作是一次匹配任何类别的字符。在这种情况下,您要么尝试匹配任何大写字符,要么匹配A-Z
& 符号&
。 - 我们将
.Global
属性设置True
为匹配字符串中每次出现For i =
的模式,因此我们可以使用我们的方法遍历它们。
推荐阅读
- python - 在 gspread_pandas 中使用 df_to_sheet 时锁定列以防止删除
- db2 - InfoSphere Data Replication 11.4.0 CDC 配置
- python - 我可以创建一个`pytest.mark.failif`吗?
- java - 使用 Volley 传递参数和标头
- reactjs - 允许用户修改我网页上的标签
- c - C - 我在获取字符串时遇到问题
- php - 为自定义 PHP 页面提供新标题我无法修改 (wordpress) HEAD / HEADER
- wxpython - wxPython 简单的 GUI 证明难以捉摸
- python - 为什么我在尝试导入用户模型时收到此 ImportError?
- java - 在 JavaFX 画布上绘图什么都不做