2016-11-12 45 views
0

我有一个情况,我想有一个输入框,其中像“C123q23C456a45”字符串输入。该模式将保持不变,因此它将始终为C,3个数字,A-z,数字(该数字可以是2或3位数字)。 我想用C分割这个字符串,所以上面的例子将被拆分为: C456a45和C123q23。这个输出显示在一个消息框中,C123的形式有23个q,c456有45个。如果这是有道理的,则为 。我想分割输入(通过输入框输入)作为字符串

我该如何解决这个问题?

感谢感激

+0

嘿感谢,这正是我试图为好。对不起,我没有提到。它需要灵活。例如。有2个以上的C,所以它会返回3,基本上是a(1),a(2)和a(3)。我如何适应这种灵活性?也许是计算输出数量的东西..字母表后的数字也可能是3或4位数字......并非总是2. – Vigmo10

+0

感谢和抱歉,我没有提及它之前。 – Vigmo10

回答

1

如果你生活中可以没有VBA要做到这一点,你可以,如果你有你想在A1分割字符串中使用这些公式:

=LEFT(A1;FIND("C";A1;FIND("C";A1)+2)-1)C123q23
=RIGHT(A1;LEN(A1)-LEN(LEFT(A1;FIND("C";A1;FIND("C";A1)+2)-1)))用于C456a45

** **修订

Sub Macro1() 
Dim strFirstSplitA As String, str1A As String, str2A As String 
Dim strA As String, strAA As String, strAAA As String 
Dim str1B As String, strB As String, strBB As String, strBBB As String 
Dim strMsgBoxA As String, strMsgBoxB As String 

str1A = InStr(1, Range("A1"), "C") + 2 
str2A = InStr(str1A, Range("A1"), "C")        '       FIND("C";A1)+2)-1) 
strFirstSplitA = Left(Range("A1"), str2A - 1) 

strA = Left(strFirstSplitA, 4) 
strAA = Right(strFirstSplitA, Len(strFirstSplitA) - 4) 
strAAA = Right(strAA, Len(strAA) - Len(Left(strAA, 1))) 
strMsgBoxA = strA & " has " & strAAA & " of " & Left(strAA, 1) 
' C123 has 23 of q 

str1B = Right(Range("A1"), Len(Range("A1")) - Len(strFirstSplitA)) 

strB = Left(str1B, 4) 
strBB = Right(str1B, Len(str1B) - 4) 
strBBB = Right(strBB, Len(strBB) - Len(Left(strBB, 1))) 
strMsgBoxB = strB & " has " & strBBB & " of " & Left(strBB, 1) 
' c456 has 45 of a 

MsgBox strMsgBoxA & " and " & strMsgBoxB 

End Sub 
+0

嘿感谢哥们,但不幸的是我需要vba。感谢你的时间! – Vigmo10

+0

@ Vigmo10尝试更新的代码:-) – Niclas

+0

嘿感谢niclas作品像一个魅力! – Vigmo10

0

没有测试,但是这样的事情:

a = Split("C123q23C456a45", "C") 

For i = 1 To Ubound(a) 
    Debug.Print Left$(a(i), 3), Mid$(a(i), 5) 
Next 
+0

嘿欢呼的人它确实工作,但对于这个问题尼古拉斯更准确。谢谢! – Vigmo10

相关问题