我有一个excel中有一行的列表,它有三种不同类型(模式)的字符串:
对于第一种类型,例如: ABCD
所以它总是一组字母,没有数字或其他任何东西。
对于第二种类型,例如: ABCD(HOLA)
所以它总是字母组合和括号内的字母组合。
对于第三种类型,例如: ABCD(HOLA),SOLE
所以它总是字母组合和括号内的字母组合和逗号后跟另一个字母组合
所有这三种类型都列出了以下模式。
让我们说:ABCD和ABCD(SOLE)和ABCD(HOLA),SOLE
然后我的单元格将如下所示:
ABCD,ABCD(HOLA),ABCD(HOLA),SOLE
现在我有类型3,其中还包含一个逗号。你可以说这里有两个不同的逗号。一个用于划分每个条目和另一个条目 实际上是一个条目的一部分。 我现在要做的是获取这三种类型并将它们粘贴到另一个单元格中。
我不知道如何解决这个问题。如果有人能给我一个如何开始的建议,那就太好了。
答案 0 :(得分:1)
Soshiribo, 我认为这对你有用。您显然希望重命名和定义所有变量并更改循环的限制,但这应该有效。
Dim string2() As String
For I = 1 To 3
Erase string2()
string1 = ActiveSheet.Cells(I + 1, 2)
string2() = Split(string1, ",")
x = UBound(string2) - LBound(string2) + 1
Select Case x:
Case Is = 5
String3 = string2(0) + "," + string2(1)
String4 = string2(2)
String5 = string2(3) + "," + string2(4)
ActiveSheet.Cells(I + 1, 4) = String3
ActiveSheet.Cells(I + 1, 5) = String4
ActiveSheet.Cells(I + 1, 6) = String5
Case Is = 6
String3 = string2(0) + "," + string2(1)
String4 = string2(2) + "," + string2(3)
String5 = string2(4) + "," + string2(5)
ActiveSheet.Cells(I + 1, 4) = String3
ActiveSheet.Cells(I + 1, 5) = String4
ActiveSheet.Cells(I + 1, 6) = String5
End Select
Next I
答案 1 :(得分:0)
如果你正在寻找一个正则表达式,这是一个想法:
(\w+)( \(HOLA\))?,? ?(SOLE|SUPRA|ITAN)?
我并不完全了解所有要求,所以这只是一个起点。