我目前正在使用这段代码(从这里的另一个用户那里得到)来查找B1列中的每个单元格,并找出其中包含";"的单元格,例如"hello;goodbye"。该代码将在";"处分割单元格,并将"goodbye"直接放在"hello;"下面的全新行中。
现在我需要的是...如果一个单元格包含多个 ";"(例如"hello;goodbye;yo;hi;hey"),则它将在每个";"处分割,而不仅仅是第一个,然后将每个分割后的内容移动到新行中并排列在一起...
我需要做哪些修改?
现在我需要的是...如果一个单元格包含多个 ";"(例如"hello;goodbye;yo;hi;hey"),则它将在每个";"处分割,而不仅仅是第一个,然后将每个分割后的内容移动到新行中并排列在一起...
我需要做哪些修改?
Dim r1 As Range, r2 As Range
Dim saItem() As String
For Each r1 In ActiveSheet.Range("B1", Cells(Application.Rows.Count, 2).End(xlUp))
If InStr(1, r1.Value2, ";") > 0 Then
saItem = Split(r1.Value2, ";")
r1 = Trim$(saItem(0)) & ";"
r1.Offset(1).EntireRow.Insert (xlDown)
r1.Offset(1) = Trim$(saItem(1))
End If
Next r1
saItem
数组(请注意,你的代码已经检索到了saItem(0)
和saItem(1)
)。你所要做的就是迭代数组元素,在每个元素上调用Trim$
并将它们放入正确的行中(就像你的代码已经为第一个元素所做的那样)。 - Ken White