Excel精英培训网

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

[已解决]怎么提取出货号和尺码

[复制链接]
发表于 2014-1-20 16:49 | 显示全部楼层 |阅读模式
请问怎么提取出货号和尺码?谢谢
最佳答案
2014-1-20 16:58
本帖最后由 baksy 于 2014-1-22 11:17 编辑

货号
B2 =MID(A2,SEARCH("A",A2)+1,9)
尺码
C2 =IF(LEN(--RIGHT(A2,3))=2,RIGHT(A2,2),RIGHT(A2,4))
      或 =RIGHT(A2,IF(LEN(--RIGHT(A2,3))=2,2,4))

新建 Microsoft Office Excel 工作表 (2).rar

9.83 KB, 下载次数: 21

发表于 2014-1-20 16:54 | 显示全部楼层
回复

使用道具 举报

发表于 2014-1-20 16:58 | 显示全部楼层    本楼为最佳答案   
本帖最后由 baksy 于 2014-1-22 11:17 编辑

货号
B2 =MID(A2,SEARCH("A",A2)+1,9)
尺码
C2 =IF(LEN(--RIGHT(A2,3))=2,RIGHT(A2,2),RIGHT(A2,4))
      或 =RIGHT(A2,IF(LEN(--RIGHT(A2,3))=2,2,4))
回复

使用道具 举报

发表于 2014-1-20 18:38 | 显示全部楼层
B1
  1. =MID(A2,FIND("A",A2)+1,8)
复制代码
下拉
c1
  1. =MID(RIGHT(A2,5),FIND(" ",RIGHT(A2,5))+1,5)
复制代码
下拉
回复

使用道具 举报

发表于 2014-1-20 19:04 | 显示全部楼层
Sub test()
    Dim arr, brr, k%, i%, n%
    arr = Range("a1:c" & Cells(Rows.Count, 1).End(3).Row)
    brr = Array("[A-Z]{3}\d{3}-\d", "\d+\.?\d?")
    n = 1
    With CreateObject("vbscript.regexp")
        .Global = True
        For i = 0 To 1
            .Pattern = brr(i)
            For k = 2 To UBound(arr)
                For Each m In .Execute(arr(k, 1))
                    arr(k, n + 1) = m
                Next m
            Next k
            n = n + 1
        Next i
    End With
    arr(1, 2) = "货号": arr(1, 3) = "尺码"
    Sheet2.Cells.ClearContents
    Sheet2.Range("a1").Resize(UBound(arr), UBound(arr, 2)) = arr
    Sheet2.Select
End Sub

提取货号和尺码(正则).rar

22.8 KB, 下载次数: 5

回复

使用道具 举报

 楼主| 发表于 2014-1-22 10:57 | 显示全部楼层
baksy 发表于 2014-1-20 16:58
货号
B2 =MID(A2,SEARCH("A",A2)+1,9)
尺码

尺码
C2 =IF(LEN(--RIGHT(A2,3))=2,RIGHT(A2,2),RIGHT(A2,4))
这个我也是这样设置的公式,可是不好使呀,LEN(--RIGHT(A2,3))=2这个right前的--什么意思?谢谢
回复

使用道具 举报

 楼主| 发表于 2014-1-22 10:59 | 显示全部楼层
风林火山 发表于 2014-1-20 19:04
Sub test()
    Dim arr, brr, k%, i%, n%
    arr = Range("a1:c" & Cells(Rows.Count, 1).End(3).Row)
...

亲 你这个好牛呀{:06:}
回复

使用道具 举报

发表于 2014-1-22 11:05 | 显示全部楼层
哦哈哈 发表于 2014-1-22 10:57
尺码
C2 =IF(LEN(--RIGHT(A2,3))=2,RIGHT(A2,2),RIGHT(A2,4))
这个我也是这样设置的公式,可是不好使 ...

两个“-”号是文本转数值的,以便判断最后三位带不带空格,
对你这个基础数据,公式应该没问题,
请把出错的附件传一下。
回复

使用道具 举报

 楼主| 发表于 2014-1-22 13:42 | 显示全部楼层
baksy 发表于 2014-1-22 11:05
两个“-”号是文本转数值的,以便判断最后三位带不带空格,
对你这个基础数据,公式应该没问题,
请把出 ...

我设的公式right前没加--,所以有小数点的都不对,你给的公式很好用,谢谢!
回复

使用道具 举报

发表于 2014-1-22 14:44 | 显示全部楼层
风林火山 发表于 2014-1-20 19:04
Sub test()
    Dim arr, brr, k%, i%, n%
    arr = Range("a1:c" & Cells(Rows.Count, 1).End(3).Row)
...

借用风林的代码优化一下
  1. Sub test()
  2.     Dim arr, k%, i%
  3.     arr = Range("a1:c" & Cells(Rows.Count, 1).End(3).Row)
  4.     With CreateObject("vbscript.regexp")
  5.         .Global = True
  6.         .Pattern = "([B-Z]+\d.+? ).+?(\d.+)"
  7.         For k = 2 To UBound(arr)
  8.             For Each m In .Execute(arr(k, 1))
  9.                 arr(k, 2) = .Replace(m.Value, "$1")
  10.                 arr(k, 3) = .Replace(m.Value, "$2")
  11.             Next m
  12.         Next k
  13.     End With
  14.     arr(1, 2) = "货号": arr(1, 3) = "尺码"
  15.     Sheet2.Cells.ClearContents
  16.     Sheet2.Range("a1").Resize(UBound(arr), UBound(arr, 2)) = arr
  17.     Sheet2.Select
  18. End Sub
复制代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 22:32 , Processed in 0.702840 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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