我想将带有标记的字符串拆分为';'分成2个值列表。 例如,我有字符串: AXX1.CYY1; AXX2.CYY2; AXX3.CYY3; AXX4.CYY4 我想将它列为2个列表,第一个应该包含'。'右边的值,而第二个应该包含左边的值 实际上,结果应该是:
AXX1;AXX2;AXX3;AXX4
CYY1;CYY2;CYY3;CYY4
到目前为止,我认为我的策略是在VBA函数中创建一个循环来分割单词。单个值又分成2个部分,这些部分放在一个列表中。 除此之外,您如何将代码应用于excel单元格。 如果有任何其他方法可以实现,欢迎。
答案 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
运行测试子导致:
答案 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),".",";")