2016-06-24 69 views
1

我在vba中运行此代码,我想将整个单元格分隔到新工作表中的一个数组中,但我无法将它拆分成单元格中的所有内容,如下图所示。我想要它分裂成一个新的单元格和一个新的数组,以便我可以搜索该数组中的关键词。请看代码,看看可以做些什么。如果你的细胞包裹着CR-LF或只是一个LF单元格中的整个字符串不拆分

感谢

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​

enter image description here

+2

尝试'分裂'与空格作为分隔符。 – findwindow

+1

我会使用拆分。你将需要翻倍。您将使用vbCRLF作为分隔符将单元格拆分为数组,然后使用空格作为分隔符分隔每个数组项目。 – Kyle

回答

1

无法从你的例子告诉。

假设它只是一个换行符这应该工作:

替换该行

.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 

编辑 - 变换分裂细胞进入阵列

在顶部

昏暗varHorizArray为Variant 昏暗RGE添加新的声明作为范围 昏暗intCol作为整数

.Copy命令之前,添加

Set rge = Selection 
varHorizArray = rge 

使用结果数组的例子y,加到底

' 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 
+0

感谢新的工作。我将如何更改偏移量以将数组发送到新工作表,以便我可以搜索内部的字符串? – johndoe253

+0

什么数组?我看不到任何引用数组的代码? – dbmitch

+0

如何将分割单元格变成数组? – johndoe253

相关问题