Excel精英培训网

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

[已解决]请教各位,把B列店名1里的品牌去掉,变成品牌2放在C列

[复制链接]
发表于 2013-11-18 16:38 | 显示全部楼层 |阅读模式
本帖最后由 chensir 于 2013-11-18 17:03 编辑

1、        把B列店名1里的,品牌去掉变成店名2放在C列
2、        如果店名1里第一个是字母,这个字母要保留

尽量用一个速度比较快的代码

多谢


最佳答案
2013-11-18 18:35
Sub Test()
    Dim A, i
    A = Range("A1:C" & Range("B65536").End(xlUp).Row)
    With CreateObject("VBScript.RegExp")
        .Pattern = "[^\u4E00-\u9FA5]{2,}"
        For i = 2 To UBound(A)
            If .Test(A(i, 2)) Then A(i, 3) = .Replace(A(i, 2), "")
        Next i
    End With
    Range("A1").Resize(UBound(A), UBound(A, 2)) = A
End Sub
3.rar (14.36 KB, 下载次数: 8)

工作簿1.rar

6.25 KB, 下载次数: 8

发表于 2013-11-18 17:08 | 显示全部楼层
Sub Test()
    Dim A, i

    A = Range("A1:C" & Range("B65536").End(xlUp).Row)
    With CreateObject("VBScript.RegExp")
        .Global = False
        .Pattern = "[A-Za-z]+\w+"
        
        For i = 2 To UBound(A)
            If .Test(A(i, 2)) Then A(i, 3) = .Replace(A(i, 2), "")
        Next i
    End With
    Range("A1").Resize(UBound(A), UBound(A, 2)) = A
End Sub
工作簿2.rar (14.88 KB, 下载次数: 5)
回复

使用道具 举报

 楼主| 发表于 2013-11-18 17:14 | 显示全部楼层
爱疯 发表于 2013-11-18 17:08
Sub Test()
    Dim A, i

谢谢。漏了寄卖了。请看附件第15行,谢谢

工作簿1.rar

6.36 KB, 下载次数: 7

回复

使用道具 举报

发表于 2013-11-18 18:35 | 显示全部楼层    本楼为最佳答案   
Sub Test()
    Dim A, i
    A = Range("A1:C" & Range("B65536").End(xlUp).Row)
    With CreateObject("VBScript.RegExp")
        .Pattern = "[^\u4E00-\u9FA5]{2,}"
        For i = 2 To UBound(A)
            If .Test(A(i, 2)) Then A(i, 3) = .Replace(A(i, 2), "")
        Next i
    End With
    Range("A1").Resize(UBound(A), UBound(A, 2)) = A
End Sub
3.rar (14.36 KB, 下载次数: 8)

评分

参与人数 1 +21 收起 理由
CheryBTL + 21 很给力!

查看全部评分

回复

使用道具 举报

发表于 2013-11-18 19:40 | 显示全部楼层
.Pattern = "[A-z]+\(*\)*"

为什么这样就不行了呢?等学习好了
回复

使用道具 举报

发表于 2013-11-18 20:35 | 显示全部楼层
借用爱疯版的方法,但不会全部匹配:
  1. Sub Test()
  2.      Dim A, i, str, re, match, matches
  3.      A = Range("A1:C" & Range("B65536").End(xlUp).Row)
  4.      ReDim re(1 To UBound(A) - 1, 1 To 1)
  5.      With CreateObject("VBScript.RegExp")
  6.          .Pattern = "[A-z]"
  7.          .Global = True
  8.          For i = 2 To UBound(A)
  9.             str = Mid(A(i, 2), 2, 999)
  10.             Set matches = .Execute(str)
  11.              For Each match In matches
  12.                 str = Replace(str, match, "")
  13.              Next
  14.              re(i - 1, 1) = Replace(Replace(Left(A(i, 2), 1) & str, "(", ""), ")", "")
  15.          Next i
  16.      End With
  17.      [c2].Resize(UBound(re)) = re
  18. End Sub
复制代码
回复

使用道具 举报

发表于 2013-11-18 21:23 | 显示全部楼层
爱疯 发表于 2013-11-18 19:40
.Pattern = "[A-z]+\(*\)*"

为什么这样就不行了呢?等学习好了

[A-z]+(\(\w+\))*

评分

参与人数 1 +21 收起 理由
CheryBTL + 21 很给力!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 13:06 , Processed in 0.756367 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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