ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] VBA求助:指定位置替换多个结果

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-8-15 23:25 | 显示全部楼层 |阅读模式

VBA求助:希望A列中“1:”替换为空值,“;2:”、“;3:”、“;4:”等替换为“|”符号,替换结果在B列显示

替换前
替换后
1:姓名;2:性别;3:职业;4:爱好
姓名|性别|职业|爱好
1:姓名;2:性别;3:职业;5:爱好
姓名|性别|职业|爱好
1:姓名;2:性别;3:职业;6:爱好
姓名|性别|职业|爱好
1:姓名;2:性别;3:职业;7:爱好
姓名|性别|职业|爱好
1:姓名;2:性别;3:职业;8:爱好
姓名|性别|职业|爱好
1:姓名;2:性别;3:职业;9:爱好
姓名|性别|职业|爱好
1:姓名;2:性别;3:职业;10:爱好
姓名|性别|职业|爱好
1:姓名;2:性别;3:职业;11:爱好
姓名|性别|职业|爱好
1:姓名;2:性别;3:职业;12:爱好
姓名|性别|职业|爱好
1:姓名;2:性别;3:职业;13:爱好
姓名|性别|职业|爱好
1:姓名;2:性别;3:职业;14:爱好
姓名|性别|职业|爱好
1:姓名;2:性别;3:职业;15:爱好
姓名|性别|职业|爱好
1:姓名;2:性别;3:职业;16:爱好
姓名|性别|职业|爱好
1:姓名;2:性别;3:职业;17:爱好
姓名|性别|职业|爱好
1:姓名;2:性别;3:职业;18:爱好
姓名|性别|职业|爱好
1:姓名;2:性别;3:职业;19:爱好
姓名|性别|职业|爱好
1:姓名;2:性别;3:职业;20:爱好
姓名|性别|职业|爱好
1:姓名;2:性别;3:职业;21:爱好
姓名|性别|职业|爱好
1:姓名;2:性别;3:职业;22:爱好
姓名|性别|职业|爱好
1:姓名;2:性别;3:职业;23:爱好
姓名|性别|职业|爱好

TA的精华主题

TA的得分主题

发表于 2018-8-16 06:52 | 显示全部楼层
直接替换就可以了吧
excel自带的

TA的精华主题

TA的得分主题

发表于 2018-8-16 08:10 来自手机 | 显示全部楼层
本来我已经 写了完整的代码 提交了,但是审核被删除了,不知道为什么,不想再写了。
头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2018-8-16 08:15 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
提示: 作者被禁止或删除 内容自动屏蔽

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-16 08:44 | 显示全部楼层
朱荣兴 发表于 2018-8-16 08:15
研究一下vba中的replace函数

VBA中的replace只研究出A列直接替换和替换到B列只替换一种结果,没研究出在不改变数据源的情况下实现多种替换结果

TA的精华主题

TA的得分主题

发表于 2018-8-16 08:44 | 显示全部楼层
  1. Sub ek_sky()
  2.     Dim arr As Variant
  3.     Dim dis As Object
  4.     Dim i As Integer
  5.        Set dis = CreateObject("vbscript.regexp")
  6.        arr = Range("A1:B" & Cells(Rows.Count, 1).End(xlUp).Row)
  7.        With dis
  8.           .Global = True
  9.           .Pattern = "[\d|\:]"
  10.              For i = 1 To UBound(arr)
  11.                 If .test(arr(i, 1)) Then
  12.                    arr(i, 2) = Replace(.Replace(arr(i, 1), ""), ";", "|")
  13.                 End If
  14.             Next i
  15.        End With
  16. Range("a1").Resize(UBound(arr), 2) = arr
  17. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-8-16 08:56 | 显示全部楼层
学习了。。。。。。。。。。

TA的精华主题

TA的得分主题

发表于 2018-8-16 09:13 | 显示全部楼层
  1. With Range("A:A")
  2.   .Replace ";*:", "|"
  3.   .Replace "1:", ""
  4. End With
复制代码

TA的精华主题

TA的得分主题

发表于 2018-8-16 15:50 | 显示全部楼层
duquancai 发表于 2018-8-16 08:10
本来我已经 写了完整的代码 提交了,但是审核被删除了,不知道为什么,不想再写了。

哈哈,没有理由、简单粗暴

今天有事刚上来看到,再这样毫无理由的删帖咱就撤了


a.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-19 16:21 | 显示全部楼层

替换前        1:姓名;2:性别;3:职业;4:爱好       
替换后       姓名|性别

请问,如何实现这个效果替换,就是除了替换数字、“;”、“.”还要把最后两列文字替换,按照目前函数就是还要再做一次替换,请教怎样实现

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

本版积分规则

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

GMT+8, 2025-1-12 10:08 , Processed in 0.026140 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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