我在vba中运行此代码,我希望整个单元格在新工作表中分成一个数组,但我无法将其拆分为单元格中的所有内容,如下图所示。我想将它拆分成一个新单元格和一个新数组,这样我就可以搜索该数组中的关键字。请查看代码,看看可以做些什么。
由于
Sub SplitWithFormat()
Dim R As Range, C As Range
Dim i As Long, V As Variant
Set R = Range("d1", Cells(Rows.Count, "d").End(xlUp))
For Each C In R
With C
.TextToColumns Destination:=.Offset(0, 1), DataType:=xlDelimited, _
consecutivedelimiter:=True, Tab:=False, semicolon:=True, comma:=False, _
Space:=True, other:=False
.Copy
Range(.Offset(0, 1), Cells(.Row, Columns.Count).End(xlToLeft)).PasteSpecial xlPasteFormats
End With
Next C
Application.CutCopyMode = False
End Sub

答案 0 :(得分:1)
无法从您的示例中判断您的手机是否使用CR-LF或只是LF包裹。
假设它只是一个换行符,这应该有效:
替换此行
.TextToColumns Destination:=.Offset(0, 1), DataType:=xlDelimited, _
consecutivedelimiter:=True, Tab:=False, semicolon:=True, comma:=False, _
Space:=True, other:=False
这一行
.TextToColumns Destination:=.Offset(0, 1), DataType:=xlDelimited, _
consecutivedelimiter:=True, Tab:=False, semicolon:=True, comma:=False, _
Space:=True, other:=True, Otherchar:=vbLf
如果它实际上是 - 的组合 - 那么使用它:
.TextToColumns Destination:=.Offset(0, 1), DataType:=xlDelimited, _
consecutivedelimiter:=True, Tab:=False, semicolon:=True, comma:=False, _
Space:=True, other:=True, Otherchar:=vbCrLf
编辑 - 将拆分单元格转换为数组
在顶部添加新声明
Dim varHorizArray As Variant Dim rge As Range Dim intCol As Integer
在.Copy
命令之前,添加
Set rge = Selection
varHorizArray = rge
使用结果数组的示例,添加到底部
' Array returned is two dimensional - 1 row by 7 columns
For intCol = LBound(varHorizArray, 2) To UBound(varHorizArray, 2)
Debug.Print varHorizArray(1, intCol)
Next intCol