【问题标题】:Split String to multiple cells将字符串拆分为多个单元格
【发布时间】:2019-10-29 11:09:36
【问题描述】:

我有问题。

我有这个:

("boufous;othman;212544;casa")

我想将此单元格拆分为多个单元格,例如:

cell[1]=boufouscell[2]=othmancell[3]=212544 cell[4]=casa

For Each olMailItem In olItems
   //Code here

    i = i + 1

Next olMailItem

【问题讨论】:

  • 你可以使用Split()
  • 请看看这个有用的link如何使用SPLIT函数
  • I want to split this cell to multiple cells like:... 为什么 VBA 而不是 Excel 的 Data Tab|Text To Colummns 使用 ; 作为分隔符?

标签: excel vba split


【解决方案1】:

如果您必须使用 VBA,我个人确实喜欢两种方法。想象一下以下数据:

1. Split

根据给出的 cmets,您可以使用一个名为 Split 的函数。这是一个小脚本,展示了如何通过一个小循环来处理这个问题:

Sub UseSplit()

Dim arr As Variant
Dim lr As Long, x As Long

With Sheet1 'Change CodeName accordingly
    lr = .Cells(.Rows.Count, 1).End(xlUp).Row
    arr = .Range("A1:A" & lr)
    For x = LBound(arr) To UBound(arr)
        .Cells(x, 2).Resize(1, UBound(Split(arr(x, 1), ";")) + 1) = Split(arr(x, 1), ";")
    Next x
End With

End Sub

2. TextToColumns

第二种方法是利用内置函数使用TextToColumns 函数将分隔文本写入其他列。这不会涉及循环。下面是一个小例子:

Sub UseSplit()

Dim rng As Range
Dim lr As Long

With Sheet1 'Change CodeName accordingly
    lr = .Cells(.Rows.Count, 1).End(xlUp).Row
    Set rng = .Range("A1:A" & lr)
    rng.TextToColumns Destination:=.Range("B1"), Semicolon:=True
End With

End Sub

这样做的好处是,Split 将返回一个字符串值数组,而文本到列则不会:

本来应该是数字的值,实际上是数字。

问题仍然存在,您真的需要通过 VBA 工作吗?不管怎样,祝你的项目好运=)

【讨论】:

    【解决方案2】:

    假设 olMailItem 为字符串,下面是代码

    Dim str1, str2
    olMailItem = "boufous;othman;212544;casa"
    str1 = Split(olMailItem, ";")
    str2 = UBound(str1)
    For i = 0 To str2
        Debug.Print str1(i)
    Next i
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-13
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-14
      相关资源
      最近更新 更多