EXCEL中特定文字,如果把信息整理出来。

如何把下面这段文字:【西部交.易中心】各位会员:今日10:40-11:00挂单交.易,延炼聚丙烯(华东)T30S报价9050元/吨,600吨; 榆能化聚乙烯(华东)T60-800报价10050元/吨,350吨;榆能化聚丙烯(华东)k8003报价10150元/吨,350吨。欢迎上线关注。很好地整理为表格形式。

最好不要用LEFT,RIGHT MID这些,因为中间要数字节的话,有的时候价格会变动,现在是9050,以后可能变为5位数,这样字节的个数就变了。

求大神
我已经知道问题,大神能不能帮我再后面再加几列,因为有的时候报价吨数可能不止3个,有可能有4个或者5个,谢谢

Sub æå–()
Dim arr(1 To 99, 1 To 3)
brr = [a1].CurrentRegion.Resize(, 2)
Set regex = CreateObject("VBScript.RegExp")
regex.Global = True
regex.Pattern = "([,;;])([^;;]+)报价(\d+)元/吨,(\d+)吨"
For i = 1 To UBound(brr)
    Set matches = regex.Execute(brr(i, 1))
    For Each Match In matches
        p = p + 1
        arr(p, 1) = Match.submatches(1)
        arr(p, 2) = Match.submatches(2)
        arr(p, 3) = Match.submatches(3)
    Next
Next
Cells(Rows.Count, 3).End(xlUp).Offset(1).Resize(p, 3) = arr
End Sub

把原文字放在A1单元格(多段文字则依次放入A2、A3……),然后点击按钮运行以上宏代码,直接出结果,如图所示:

 

追问

大神,你是真正的大神,能不能再麻烦你一下,我希望格式是横着的,运行宏直接出来。如果不行就只能需要转置一下,还需要经过一些加工。能不能直接搞定。拜托


追答Sub æå–()
Dim arr(1 To 2, 1 To 1000)
brr = [a1].CurrentRegion.Resize(, 2)
Set regex = CreateObject("VBScript.RegExp")
regex.Global = True
regex.Pattern = "([,;;])([^;;]+)报价(\d+)元/吨,(\d+)吨"
For i = 1 To UBound(brr)
    Set matches = regex.Execute(brr(i, 1))
    For Each Match In matches
        p = p + 2
        arr(1, p - 1) = Match.submatches(1)
        arr(2, p - 1) = Match.submatches(2)
        arr(1, p) = "吨数"
        arr(2, p) = Match.submatches(3)
    Next
Next
Sheet2.Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(2, p) = arr
Sheet2.Activate
End Sub

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-04-22
=MID(A1,FIND(",",A1)+1,FIND("报价",A1)-FIND(",",A1)-1)
=TRIM(LEFT(RIGHT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"报价",REPT(" ",100)),"元/吨,",REPT(" ",100)),"吨",REPT(" ",100)),900),100))
=REPLACE(TRIM(LEFT(RIGHT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"报价",REPT(" ",100)),"元/吨",REPT(" ",100)),"吨",REPT(" ",100)),800),100)),1,1,"")
=REPLACE(TRIM(LEFT(RIGHT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"报价",REPT(" ",100)),"元/吨",REPT(" ",100)),"吨",REPT(" ",100)),700),100)),1,1,"")
=TRIM(LEFT(RIGHT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"报价",REPT(" ",100)),"元/吨",REPT(" ",100)),"吨",REPT(" ",100)),600),100))
=REPLACE(TRIM(LEFT(RIGHT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"报价",REPT(" ",100)),"元/吨",REPT(" ",100)),"吨",REPT(" ",100)),500),100)),1,1,"")
第2个回答  2015-04-22
用一个自定义函数提取数字可以实现。(文本数字提取函数)