Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: 兰色幻想

[分享] VBA中实现excel批量替换的代码

  [复制链接]
发表于 2011-3-10 20:05 | 显示全部楼层
还是不行,不能达到效果,如附件测试区效果

Book2.rar

199.11 KB, 下载次数: 71

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

 楼主| 发表于 2011-3-10 20:18 | 显示全部楼层
金刚 发表于 2011-3-10 20:05
还是不行,不能达到效果,如附件测试区效果

这次选多少都可以了,注意,在选取被替换区域时,如果是不连续的,要按ctrl进行多个区域的选取。不要选无关区域,象表中的A,F列之外的。
Sub 批量替换()
On Error Resume Next
Dim 被替换区域 As Range
Dim 替换列表区域 As Range
Dim arr, arr1
Set 被替换区域 = Application.InputBox("请选取被替换的区域", "替换提示", , , , , , 8)
100:
Set 替换列表区域 = Application.InputBox("请选取替换规则的两列区域", "替换提示", , , , , , 8)
k = MsgBox("你是否要进行匹配替换,匹配点是,否则点“否”", 4 + 64)
If UBound(替换列表区域.Value, 2) < 2 Then GoTo 100
arr = 被替换区域.Value
arr1 = 替换列表区域
For q = 1 To 被替换区域.Areas.Count
arr = 被替换区域.Areas(q)
For x = 1 To UBound(arr)
For j = 1 To UBound(arr, 2)
   For y = 1 To UBound(arr1)
     If arr(x, j) Like IIf(k = 6, arr1(y, 1), "*" & arr1(y, 1) & "*") Then
       arr(x, j) = Application.WorksheetFunction.Substitute(arr(j, 1), arr1(y, 1), arr1(y, 2))
       Exit For
     End If
    Next y
  Next j
  Next x
  被替换区域.Areas(q) = arr
Next q
End Sub

回复

使用道具 举报

发表于 2011-3-10 20:36 | 显示全部楼层
回复

使用道具 举报

发表于 2011-3-10 20:57 | 显示全部楼层
兰色幻想 发表于 2011-3-10 20:18
这次选多少都可以了,注意,在选取被替换区域时,如果是不连续的,要按ctrl进行多个区域的选取。不要选无 ...

大部分被替换成同一个代码了{:191:}
替换效果.gif
回复

使用道具 举报

 楼主| 发表于 2011-3-10 22:12 | 显示全部楼层
有句代码写错了,呵呵,再试试
Sub 批量替换()
On Error Resume Next
Dim 被替换区域 As Range
Dim 替换列表区域 As Range
Dim arr, arr1
Set 被替换区域 = Application.InputBox("请选取被替换的区域", "替换提示", , , , , , 8)
100:
Set 替换列表区域 = Application.InputBox("请选取替换规则的两列区域", "替换提示", , , , , , 8)
k = MsgBox("你是否要进行匹配替换,匹配点是,否则点“否”", 4 + 64)
If UBound(替换列表区域.Value, 2) < 2 Then GoTo 100
arr = 被替换区域.Value
arr1 = 替换列表区域
For q = 1 To 被替换区域.Areas.Count
arr = 被替换区域.Areas(q)
For X = 1 To UBound(arr)
   For y = 1 To UBound(arr1)
     If arr(X, 1) Like IIf(k = 6, arr1(y, 1), "*" & arr1(y, 1) & "*") Then
       arr(X, 1) = Application.WorksheetFunction.Substitute(arr(X, 1), arr1(y, 1), arr1(y, 2))
       Exit For
     End If
    Next y
  Next X
  被替换区域.Areas(q) = arr
Next q
End Sub
回复

使用道具 举报

发表于 2011-3-11 08:16 | 显示全部楼层
本帖最后由 金刚 于 2011-3-11 08:16 编辑

这回行了,很好用,多谢兰版,这对我们的工作太有用了{:021:}
回复

使用道具 举报

发表于 2011-3-11 20:01 | 显示全部楼层
收藏慢慢理解
回复

使用道具 举报

发表于 2011-3-15 09:53 | 显示全部楼层
兰色幻想 发表于 2011-3-14 10:04
上传一个文件吧

上传了,麻烦兰版了
回复

使用道具 举报

发表于 2011-3-14 09:59 | 显示全部楼层
本帖最后由 金刚 于 2011-3-14 13:32 编辑

再次请教兰版了{:041:},如果被替换的旧代码A、B包含在文本中,如“在生产过程中投入A和B,同时注意.......”,执行以上非匹配替换功能后不能达到替换效果

Book1 (1).rar

4.27 KB, 下载次数: 26

回复

使用道具 举报

 楼主| 发表于 2011-3-14 10:04 | 显示全部楼层
上传一个文件吧
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-19 19:32 , Processed in 0.477929 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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