尝试拆分包含多个变量的单个单元格

时间:2016-06-02 16:02:24

标签: excel vba excel-vba split delimiter

我的非Microsoft文件看起来像是:

>gibberish that changes AAARRGGGHHHH

现在,我有一个代码来创建一个新的.xlsx文件,使用Trying to convert files while keeping the old name进行拆分。

然而,我想要" A2"要分割的单元格内容,每个单独的字母被分配一个单元格,然后删除以前的内容。我不介意,如果最终在A3直到AZ。

因此,上面的例子我想转换成它看起来像:

>gibberish that changes
A A A R R G G G H H H H

澄清"改变的#Gibberish"它不是一个常数,它改变每个文件我有这里表示的东西。第二行也是如此。

基于Split cell string into individual cells

我试过这段代码:

Dim sVar1 as string
Dim sVar2 as string

I = InStr(1, strX, "A" & "R" & "G" & "H")

sVar1 = mid(strX, 1, I)
sVar2 = mid(strx,i+1)

然而,这没有结果。它不会导致宏失败(因为我没有得到任何错误消息,其余的宏工作(将文件更改为另一种格式并更改名称),但它没有做任何事情。我想使用字符串作为文件在单元格A2中的内容和顺序不断变化。

我也没有真正的分隔符,因为像ARRGHHHH这样的东西被写成一个单词,是否会导致问题?

4 个答案:

答案 0 :(得分:4)

my 0.02 with Character object

Sub main()
    With Range("A2")
        For i = 1 To Len(.Value)
            .Offset(, i) = .Characters(i, 1).Text
        Next i
    End With
End Sub

答案 1 :(得分:1)

这会将 A2 解析为其字符,并将字符放在 A2 旁边,每个字符都位于自己的单元格中:

Sub dural()
With Range("A2")
    v = .Value
    L = Len(v)
    For i = 1 To L
        .Offset(0, i).Value = Mid(v, i, 1)
    Next i
End With
End Sub

enter image description here

修改#1:

这将处理一系列输入单元格和清除原始输入数据。之前:

enter image description here

新宏:

Sub dural2()
    Dim rng As Range, r As Range, v As Variant
    Dim L As Long, i As Long
    Set rng = Range("A2:A40")
        For Each r In rng
        v = r.Value
        L = Len(v)
        For i = 1 To L
            r.Offset(0, i - 1).Value = Mid(v, i, 1)
        Next i
    Next r
End Sub

结果:

enter image description here

答案 2 :(得分:0)

这会有用吗?

Sub Test()

Dim i As Integer
Dim num As Integer

num = Len(Range("A1"))

For i = 1 To num
    Debug.Print Mid(Range("A1"), i, 1)
Next

End Sub

答案 3 :(得分:0)

试试这个。

    Sub dural()
    With Range("A2")
        v = .Value
        L = Len(v)
        For i = 0 To L - 1
            If i = 0 Then
                .Offset(0, i).Value = Left(v, 1)

            Else
                .Offset(0, i).Value = Mid(v, i, 1)
            End If
        Next i
    End With
    End Sub

Input

output