使用vba将excel中的单元格划分为3种不同的字符串模式

时间:2016-03-29 18:02:01

标签: regex excel vba excel-vba

我有一个excel中有一行的列表,它有三种不同类型(模式)的字符串:

  1. ABCD,CBFG,EXAL
  2. 对于第一种类型,例如: ABCD

    所以它总是一组字母,没有数字或其他任何东西。

    1. ABCD(HOLA),CBFG(HOLA),EXAN(HOLA)
    2. 对于第二种类型,例如: ABCD(HOLA)

      所以它总是字母组合和括号内的字母组合。

      1. ABCD(HOLA),SOLE,CBFG(HOLA),SUPRA,EXAN(HOLA),ITAN
      2. 对于第三种类型,例如: ABCD(HOLA),SOLE

        所以它总是字母组合和括号内的字母组合和逗号后跟另一个字母组合

        所有这三种类型都列出了以下模式。

        让我们说:ABCD和ABCD(SOLE)和ABCD(HOLA),SOLE

        然后我的单元格将如下所示:

        ABCD,ABCD(HOLA),ABCD(HOLA),SOLE

        现在我有类型3,其中还包含一个逗号。你可以说这里有两个不同的逗号。一个用于划分每个条目和另一个条目 实际上是一个条目的一部分。 我现在要做的是获取这三种类型并将它们粘贴到另一个单元格中。

        我不知道如何解决这个问题。如果有人能给我一个如何开始的建议,那就太好了。

        Here is an example how I want my cell to divide the information: In B2 is the information I have. The range H1 to J4 is what I want to have

2 个答案:

答案 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)?

我并不完全了解所有要求,所以这只是一个起点。