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 用户窗体文本框字体会根据框架的大小而变化?

Excel-VBA提高: 数组/日期处理

如何在Excel表格中将系统导出的部门的代码,用公式或者vba转换成文字?

Vba excel从给定长度之间的字符串中提取文本

VBA 中的 HTML - 无法将单元格格式化为数字/货币