Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2034|回复: 5

[已解决]关于指定列替换的问题,大师帮忙改下谢谢

[复制链接]
发表于 2016-7-9 10:15 | 显示全部楼层 |阅读模式
本帖最后由 wangjiayu_1985 于 2016-7-11 09:00 编辑

我想把A1列里的数字分别替换成别的,一共有7个要替换的,这7个数量的多少不固定,我自己录制了一个宏,然后复制粘贴,也可以实现,但是感觉好麻烦,请问有简单的代码吗附件里有要替换的表格,
我录制了代码如下
Sub P1A()
Range("A3:A500").Select
    Selection.Replace What:="1", Replacement:="CM1:1", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
  Range("A3:A500").Select
    Selection.Replace What:="2", Replacement:="CM1:2", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
   Range("A3:A500").Select
    Selection.Replace What:="3", Replacement:="CM1:3", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
   Range("A3:A500").Select
    Selection.Replace What:="4", Replacement:="CM1:4", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
  Range("A3:A500").Select
    Selection.Replace What:="5", Replacement:="CM1:5", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
   Range("A3:A500").Select
    Selection.Replace What:="6", Replacement:="CM1:6", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
Range("A3:A500").Select
    Selection.Replace What:="7", Replacement:="CM1:7", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub

2222222.png     替换后   XI}3TZGS33DY2VHT~RN3%CP.png

替换.rar (21.17 KB, 下载次数: 5)
发表于 2016-7-9 10:26 | 显示全部楼层
Range("A3:A500").Select
dim k%
for k=1 to 7

    Selection.Replace What:=k, Replacement:="CM1:"&k, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

next k
回复

使用道具 举报

发表于 2016-7-9 10:28 | 显示全部楼层
另 : 以目前 的数据 ,不需要 查找 替换 ,直接 在前面 加 "CM1:"
回复

使用道具 举报

 楼主| 发表于 2016-7-9 11:27 | 显示全部楼层
砂海 发表于 2016-7-9 10:26
Range("A3:A500").Select
dim k%
for k=1 to 7

大师不是得 ,我不一定要替换成什么,这个只是随便打的,没有规律就只是替换
回复

使用道具 举报

发表于 2016-7-9 12:28 | 显示全部楼层    本楼为最佳答案   
  1. Sub test()
  2.     Dim arr, yAr, mAr, i&, x&
  3.     arr = Range("a2").CurrentRegion
  4.     yAr = Array(1, 2, 3, 4, 5, 6, 7) '查找源数据
  5.     mAr = Array("CM1:1", "CM2:2", "CM3:3", "CM4:4", "CM5:5", "CM6:6", "CM7:7") '需替换目标数据。yAr与mAr要一一对应。
  6.     For x = 0 To UBound(yAr)
  7.         For i = 2 To UBound(arr)
  8.             If arr(i, 1) = yAr(x) Then arr(i, 1) = mAr(x)
  9.         Next
  10.     Next
  11.     Range("a2").Resize(i - 1, UBound(arr, 2)) = arr
  12.     MsgBox "替换结束!"
  13. End Sub
复制代码

评分

参与人数 1 +1 收起 理由
wangjiayu_1985 + 1 很给力完美解决我的问题

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-7-11 08:59 | 显示全部楼层
雪舞子 发表于 2016-7-9 12:28

谢谢你完美解决了我的问题,非常好用。谢谢。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 07:06 , Processed in 0.439918 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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