Excel TextToColumns FixedWidth

时间:2015-01-15 23:03:37

标签: excel vba

将文本用于固定宽度的列时,用于分隔某些文件中列的空格会发生什么变化? (布局用空格填充,但也用空格分隔列)

每行,每列的数据从下一个表的开始和结束开始或结束,每个列分隔另一个空格。我的问题是,该空间是否应该是前一列或后一列的一部分。 MS文档甚至没有提到修剪固定宽度的空白。

CHAR START   CHAR MAX END( spaces will pad out to this char position if data doesn't)
1            12   
14           48 
50           52
54           63
65           68
70           73
75           89
91           102
104          138
140          142
144          EOL

这是我正在使用的代码,但我想知道第一列之后的所有字符位置是否应该增加1才能可靠..

    Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _
    FieldInfo:=Array(Array(0, 1), Array(12, 1), Array(48, 1), Array(52, 1), Array(63, 1), _
    Array(68, 1), Array(73, 1), Array(89, 1), Array(102, 1), Array(138, 1), Array(142, 1)), _         
    TrailingMinusNumbers:=True

样本数据

    111111111111 AB CDEFGH IJKLMNO PQRSTYV WXYZA       1 11.1 ABC      1    1 ABCDEFGHIJKLMNO 111111111111 AB CDEFGH IJKLMNO PQSTYVW            11 100 ABC

2 个答案:

答案 0 :(得分:0)

我不会添加任何数字,除非您的数据在右侧被截断,或者您的任何单元格中都有前导空格。

在您的示例中,您的第二列从第12位开始。第1列有12个“1”并且没有尾随空格。

请注意,“Array(0,1)”中的第二个数字表示数据类型。 1 =常规,2 =文本,3及以上是我认为的所有日期类型。如果你为所有这些(你有那里)选择general,它将自动消除数字上的尾随空白,将该值转换为数字。如果列值包含任何文本,则将其视为文本。如果为所有这些字段选择“2”,则会将列保存为文本而不进行任何转换,并且不会从数值中删除尾随空白。

答案 1 :(得分:0)

  

将文本用于固定宽度的列时,用于分隔某些文件中列的空格会发生什么变化?

他们被删除了。相当于TRIM(工作表函数)应用于每个字段(列分隔符之间的内容)。 345....DEF(此处的点代表空格)最终在一个单元格中为345,在DEF5之间的任何位置均为D。无论选择的列数据格式如何,无论字符是数字还是字母,都是如此。

只要您的解析数字表示您想要分隔的字段之间的一个或多个空格区域的旁边或内部的位置,无论是在一个或多个空格的开头,还是在一个或多个空格中,它都没有区别在一个或多个空间的任一侧或末端留出空间。无论是一个空间还是一百个都没有区别。