如何仅将文本运行到列如果列包含数据

我需要运行一个文本到列MACRO的范围,这是根据导入的数据而有所不同。 我已经分裂了vba,只是通过录制它,但是它给了我一个“没有数据parsing”错误,当列是空的。 可能有2列一直到10,所以我需要让VBA忽略“拆分文本到列”如果列是空白的

与vba相当新,所以代码是基本的,但它并不复杂。 以下是我为其中一列logging的分割:

Columns("C:C").Select Selection.TextToColumns Destination:=Range("C1"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _ Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _ :=":", FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True 

它也分裂列E,G,我和K

你可以创build一个循环,查看每一列,如果CountA()是0,就意味着没有数据。

 Sub t() Dim myCols() As Variant Dim i As Long myCols = Array(3, 5, 7, 9, 11) For i = LBound(myCols) To UBound(myCols) If WorksheetFunction.CountA(Columns(myCols(i))) <> 0 Then Columns(myCols(i)).TextToColumns Destination:=Cells(1,myCols(i)), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _ Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _ :=":", FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True End If Next i End Sub 

如果你需要添加/减less列,只需编辑myCols数组。