如何在vba中实现将单列数据分列为多列数据的功能?

在excel的“数据”选项卡下的“数据工具”组中有“分列”功能,可以实现将单列数据按照固定宽度或者指定的分隔符进行分列。

在vba中可以使用range对象的TextToColumns方法实现以上功能。

它的语法如下:

expression . TextToColumns( Destination , DataType , TextQualifier , ConsecutiveDelimiter , Tab , Semicolon , Comma , Space , Other , OtherChar , FieldInfo , DecimalSeparator , ThousandsSeparator , TrailingMinusNumbers )

其中参数Destination为分列后的数据所存放的单元格区域的起始位置;

DataType参数指定是按照分隔符分列还是按照固定宽度分列;

TextQualifier参数指定是以双引号还是单引号作为识别文本的限定符,或者是不需要用限定符识别文本;

ConsecutiveDelimiter参数表示是否将连续的分隔符看作一个分隔符还是多个分隔符;

Tab , Semicolon , Comma , Space 参数分别表示分隔符是Tab、分号、逗号还是空格;

Other参数表示分隔符是其它字符;

OtherChar参数指定其它分隔符是什么字符‘;

FieldInfo参数表示分列后的各个列的具体格式,一般情况下excel会自动转换;

DecimalSeparator , ThousandsSeparator参数分别表示以怎样的分隔符来识别实数和千分位符号。

比如如下的代码可以将A列按照逗号分隔符分列:

Sub QQ1722187970()
    Dim oWK As Worksheet
    Set oWK = Excel.ActiveSheet
    With oWK
        .Range("a1").EntireColumn.TextToColumns Destination:=.Range("a1"), DataType:=xlDelimited, comma:=True, fieldinfo:=Array(Array(1, 1))
        .Columns.AutoFit
    End With
End Sub

我们有时候需要用分列来转换单列的格式,比如单列的格式是文本格式,需要用分列转换为数值格式,这时候可以直接使用如下的代码:

Sub QQ1722187970()
    Dim oWK As Worksheet
    Set oWK = Excel.ActiveSheet
    With oWK
        .Range("a1").EntireColumn.TextToColumns
        .Columns.AutoFit
    End With
End Sub
       

发表评论