ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 952|回复: 8

[求助] 去除开头指定字符

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-5-12 23:35 | 显示全部楼层 |阅读模式
r = Cells(Rows.Count, "DD").End(3).Row
Arr = Range("DD1:DD" & r)
For i = 1 To UBound(Arr)
    s = Arr(i, 1)
    If Right(s, 1) = "+" Then s = Left(s, Len(s) - 1)
    Arr(i, 1) = s
Next
[DD1].Resize(UBound(Arr)) = Arr         

上面代码是去除尾端+号的,想修改成开头是+号去除+号

麻烦老师们帮帮忙修改一下,在此感谢

TA的精华主题

TA的得分主题

发表于 2021-5-13 00:06 | 显示全部楼层
Right、Left对调
If Right(s, 1) = "+" Then s = Left(s, Len(s) - 1)
修改为  If Left(s, 1) = "+" Then s = Right(s, Len(s) - 1)

TA的精华主题

TA的得分主题

发表于 2021-5-13 02:06 | 显示全部楼层
  1. Sub 去除首尾加号()
  2.     Dim nRow As Long, vData As Variant, oRegExp As Object, nRegExp As Long
  3.    
  4.     With [DD1].Resize(Cells(Rows.Count, "DD").End(xlUp).Row)
  5.         vData = .Value
  6.         With CreateObject("Vbscript.RegExp")
  7.             .Global = True
  8.             .IgnoreCase = True
  9.             .Pattern = "(\++)?([^+]+)?"
  10.             For nRow = 1 To UBound(vData)
  11.                 Set oRegExp = .Execute(vData(nRow, 1))
  12.                 If oRegExp.Count > 0 Then
  13.                     vData(nRow, 1) = Empty
  14.                     For nRegExp = 0 To oRegExp.Count - 1
  15.                         If nRegExp = 0 And oRegExp(nRegExp).submatches(0) Like "+*" Then
  16.                             vData(nRow, 1) = oRegExp(0).submatches(1)
  17.                         ElseIf oRegExp(nRegExp) Like "*+" Then
  18.                             Exit For
  19.                         Else
  20.                             vData(nRow, 1) = vData(nRow, 1) & oRegExp(nRegExp).Value
  21.                         End If
  22.                     Next
  23.                 End If
  24.                
  25.             Next
  26.         End With
  27.         .Offset(, 1).Formula = vData
  28.     End With
  29. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2021-5-13 02:12 | 显示全部楼层
方法二
  1. Sub 去除首尾加号()
  2.     Dim nRow As Long, vData As Variant, oRegExp As Object, nRegExp As Long
  3.    
  4.     With [DD1].Resize(Cells(Rows.Count, "DD").End(xlUp).Row)
  5.         vData = .Value
  6.         With CreateObject("Vbscript.RegExp")
  7.             .Global = True
  8.             .IgnoreCase = True
  9.             .Pattern = "(\++)?[^+]+"
  10.             For nRow = 1 To UBound(vData)
  11.                 Set oRegExp = .Execute(vData(nRow, 1))
  12.                 If oRegExp.Count > 0 Then
  13.                     vData(nRow, 1) = Empty
  14.                     For nRegExp = 0 To oRegExp.Count - 1
  15.                         If nRegExp = 0 Then
  16.                             vData(nRow, 1) = Replace(oRegExp(0), "+", "")
  17.                         Else
  18.                             vData(nRow, 1) = vData(nRow, 1) & oRegExp(nRegExp).Value
  19.                         End If
  20.                     Next
  21.                 End If
  22.             Next
  23.         End With
  24.         .Offset(, 2).Formula = vData
  25.     End With
  26. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2021-5-13 05:47 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2021-5-13 06:21 | 显示全部楼层
If left(s, 1) = "+" Then s = right(s, Len(s) - 1)
照葫芦画瓢,将值的第一位减去

TA的精华主题

TA的得分主题

发表于 2021-5-13 14:57 | 显示全部楼层
r = Cells(Rows.Count, "DD").End(3).Row
Arr = Range("DD1:DD" & r)
For i = 1 To UBound(Arr)
    If Arr(i, 1) Like "+*" Then Arr(i, 1) = Mid(Arr(i, 1), 2)
Next
[DD1].Resize(UBound(Arr)) = Arr

TA的精华主题

TA的得分主题

发表于 2021-5-13 16:15 | 显示全部楼层
Sub aa()
r = Cells(Rows.Count, "DD").End(3).Row
arr = Range("DD1:DD" & r)
For i = 1 To UBound(arr)
    c = Split(arr(i, 1), "+", 2, 0)
    If c(0) = "" Then arr(i, 1) = c(0) + c(1)
Next
[DD1].Resize(UBound(arr)) = arr
End Sub

TA的精华主题

TA的得分主题

发表于 2021-5-14 10:21 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Sub yj23()
  2. '基本操作:假设数据在A列,数据---分列---分隔符输入“+”......,把B列数据复制到A列---选择性粘贴---跳过空单元格---确定。
  3. Dim rw As Long, rng As Range
  4. Dim FirstStr As String
  5. With Sheet1
  6.     .Activate
  7.     rw = .Cells(.Rows.Count, "DD").End(xlUp).Row
  8. End With

  9. Set rng = Range(Cells(1, "DD"), Cells(rw, "DD")).Find(what:="+*")
  10. If Not rng Is Nothing Then
  11. FirstStr = rng.Address
  12. Do
  13. rng.Value = Right(rng, Len(rng) - 1)
  14. Set rng = Range(Cells(1, "DD"), Cells(rw, "DD")).Find(what:="+*", after:=rng)
  15. If rng Is Nothing Then Exit Sub         '如果找不到,退出。
  16. Loop While Not rng Is Nothing And rng.Address <> FirstStr       '如果rng不为nothing,地址为第1次的地址,就跳出循环。
  17. End If

  18. End Sub
复制代码


您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-24 21:53 , Processed in 0.041142 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表