2017-04-06 24 views
-3

我有这样一个字符串的字符串:拆分如果与RQ开始在VBA

RQ12123RQ32434RQu9798 

我需要拆分RQ的字符串。预计输出ID:

RQ12123,RQ32434,RQu9798 

我的代码:

WrdArray() = Split(Sheets(SdomCompareResultSheet).Cells(i, 5).Value) 
+1

你所期望的输出到一个单元格或三个? –

+0

iam expect数组输出,对于上面的场景,数组大小应该是3 –

+0

我的代码WrdArray()= Split(Sheets(SdomCompareResultSheet).Cells(i,5).Value) –

回答

0

坚持你的代码:

Dim WrdArray As Variant 

WrdArray = Split(Trim(Replace(Sheets(SdomCompareResultSheet).Cells(i, 5).Value, "RQ", " RQ"))) 

一个更通用的代码:

Function GetArray(strng As String, id As String) As Variant 
    GetArray = Split(Trim(Replace(strng, id, " " & id))) 
End Function 

,你可以在你的 “主” 子利用如下

Sub main() 
    Dim WrdArray As Variant 
    Dim strng As String 

    strng = "RQ12123RQ32434RQu9798" 
    WrdArray = GetArray(strng, "RQ") 

End Sub 

少一些通用代码

假设哟你知道,前两个字母是总是通过解析字符串ID:

Function GetArray(strng As String) As Variant 
    GetArray = Split(Trim(Replace(strng, Left(strng, 2), " " & Left(strng, 2)))) 
End Function 

被利用类似如下:

Sub main() 
    Dim WrdArray As Variant 
    Dim strng As String 

    strng = "RQ12123RQ32434RQu9798" 
    WrdArray = GetArray(strng) 

End Sub 
+0

这是一个通用的解决方案,或仅用于这个数据,iam期待一个通用的解决方案 –

+0

这是一个适用于您在问题中显示的代码的通用解决方案。只要用's'替换'Sheets(SdomCompareResultSheet).Cells(i,5).Value''''''s'是你想要处理的字符串 – user3598756

2

考虑:

Sub dural() 
    Dim s As String, t As String 

    s = "RQ12123RQ32434RQu9798" 
    t = Mid(Replace(s, "RQ", ",RQ"), 2) 
    MsgBox t 
End Sub 

enter image description here

编辑#1:

在输入字符串“RQ”的每一次出现将得到昏迷预置到它(除了第一个“RQ”)

EDIT#2:

为了将结果存储在一个阵列:

Sub dural() 
    Dim s As String, t As String 

    s = "RQ12123RQ32434RQu9798" 
    t = Mid(Replace(s, "RQ", ",RQ"), 2) 
    MsgBox t 

    ary = Split(t, ",") 
End Sub 
+0

如果有多个ID以RQ开头,此代码是否可以工作? –

+0

我需要将结果存储在数组中 –

+0

@PrakashSingh请参阅我的**编辑#2 ** –