在Excel单元格中使用VBA的单词

时间:2018-02-17 14:36:24

标签: excel vba

我想将带有标记的字符串拆分为';'分成2个值列表。 例如,我有字符串: AXX1.CYY1; AXX2.CYY2; AXX3.CYY3; AXX4.CYY4 我想将它列为2个列表,第一个应该包含'。'右边的值,而第二个应该包含左边的值 实际上,结果应该是:

AXX1;AXX2;AXX3;AXX4
CYY1;CYY2;CYY3;CYY4

到目前为止,我认为我的策略是在VBA函数中创建一个循环来分割单词。单个值又分成2个部分,这些部分放在一个列表中。 除此之外,您如何将代码应用于excel单元格。 如果有任何其他方法可以实现,欢迎。

2 个答案:

答案 0 :(得分:1)

你的基本逻辑是有道理的。它可以这样实现:

Function ChopandSplice(s As String) As Variant
    Dim chunks As Variant, first As Variant, second As Variant
    Dim temp As Variant
    Dim i As Long
    chunks = Split(s, ";")
    ReDim first(0 To UBound(chunks))
    ReDim second(0 To UBound(chunks))
    For i = 0 To UBound(chunks)
        temp = Split(chunks(i), ".")
        first(i) = temp(0)
        second(i) = temp(1)
    Next i
    ChopandSplice = Array(Join(first, ";"), Join(second, ";"))
End Function

Sub test()
    Dim v As Variant
    v = ChopandSplice("AXX1.CYY1;AXX2.CYY2;AXX3.CYY3;AXX4.CYY4")
    Range("A1") = v(0)
    Range("B1") = v(1)
End Sub

运行测试子导致:

enter image description here

答案 1 :(得分:1)

如果您想要非VBA解决方案,则假定您的字符串位于单元格A1中。

放入单元格B1:

=LEFT(A1,4)&MID(A1,FIND(";",A1,1),5)&MID(A1,FIND(";",A1,11),5)&MID(A1,FIND(";",A1,21),5)

放入单元格C1:

=SUBSTITUTE(MID(A1,FIND(".",A1,1)+1,4)&MID(A1,FIND(".",A1,11),5)&MID(A1,FIND(".",A1,21),5)&MID(A1,FIND(".",A1,31);5),".",";")