|
楼主 |
发表于 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
|
|