Excel:VBA 到 TRIM 长度不同的初始字符串
Posted
技术标签:
【中文标题】Excel:VBA 到 TRIM 长度不同的初始字符串【英文标题】:Excel: VBA to TRIM initial strings that vary in lengh 【发布时间】:2014-08-02 18:23:41 【问题描述】:祝大家今天好,
我有 VBA 脚本,可以修剪特定长度的字符,然后将剩余的字符复制并粘贴到另一张纸上,但我最近遇到了一个问题。最初的长度现在增加了,脚本留下了不应该的字符。这是脚本的原始部分。
If Left(Sheets("NAMES").Cells(a, 3), 6) = "Emplo:" Then
ID = Right(Left(Trim(Sheets("NAMES").Cells(a, 3)), 11), 4)
Employee_Name = Trim(Right(Trim(Sheets("NAMES").Cells(a, 3)), Len(Trim(Sheets("NAMES").Cells(a, 3))) - 11))
End If
最初,初始字符串会这样写:Emlo: 1234 Sample, Name 但现在初始字符串发生了变化,“Emlo:”之后的数字是 3、4 或 8 位长,我无法让脚本修剪适当数量的初始字符以保持名称不变。
有办法解决吗?
提前谢谢你。
【问题讨论】:
【参考方案1】:我们可以使用 空格 字符将其分开:
If Left(Sheets("NAMES").Cells(a, 3), 6) = "Emplo:" Then
ary = Split(Sheets("NAMES").Cells(a, 3), " ")
ID = ary(1)
Employee_Name = ary(2) & " " & ary(3)
End If
【讨论】:
非常感谢 Gary 的学生。它的工作就像一个cham。我只需要更改员工姓名数组,因为其中一些包含多达 4 个数组。 If Left(Sheets("NAMES").Cells(a, 3), 6) = "Emplo:" Then ary = Split(Sheets("NAMES").Cells(a, 3), " ") ID = ary( 1) Employee_Name = ary(2) & " " & ary(3) & ary(4) End If Even 尝试使用最多 5 个数组并且它按预期工作。【参考方案2】:根据您的问题,您需要有效地使用拆分功能来获得解决方案
Var = Split(Sheets("NAMES").Cells(a, 3),":")(1)
ID = Split(LTrim(Var)," ")(0)
Employee_Name = Right(Var,Len(Var) - Len(ID))
【讨论】:
谢谢贾加迪什。我尝试了您的方法,但由于某种原因,它会将名称从 ID 中拆分出来,但是当脚本将数据粘贴到另一张纸上时,它会将 ID 附加到名称上,我无法弄清楚如何将拆分分开正确的。 贾加迪什。我修复了问题所在,现在它可以正常工作了。问题在于“LEN(ID)。我已将 ID 更改为 Emplo_ID,但忘记在代码的那部分进行更改。您的方法忽略了数组计数,因此它实际上将整个名称与 ID 分开。我只有一个问题tho'。它在每个名字前面留下一个空格,我该如何解决这个问题?以上是关于Excel:VBA 到 TRIM 长度不同的初始字符串的主要内容,如果未能解决你的问题,请参考以下文章
Excel VBA - 循环遍历多个文件夹中的文件,复制范围,粘贴到此工作簿中
为啥 Excel 2010 VBA 用户窗体文本框字体会根据框架的大小而变化?