如题函数可以实现以上的功能不,文本文件数据是固定的可能有几百行,截取固定的字符入在excel不同的列,文件没有逗号或者什么做为分隔符的!

解决方案 »

  1.   

    如果是在excel里面操作:选取列,菜单"数据",分列,"固定宽度"如果你要用vb操作excel实现导入数据然后分列,可以先填充数据到固定的列,然后用录制宏,进行上面的操作.最好把宏代码在vb里实现.
      

  2.   

        Selection.TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _
            FieldInfo:=Array(Array(0, 1), Array(6, 1), Array(13, 1), Array(18, 1), Array(26, 1)), _
            TrailingMinusNumbers:=True
      

  3.   

    查看 。csv 文件 实际上就是 逗号和回车分割的excel
      

  4.   


    后面的Array(6, 1), Array(13, 1), Array(18, 1), Array(26, 1)) 怎么解释啊!唉吖!
      

  5.   


    那些(6,1),(13,1),(18,1)应该是第一列从0位置开始,第二列从6字符位置开始,第三列从13字符开始...以下是vba的帮助.LZ这样太没有效率了,应该自己去看录制的宏,自己看vba,自己在TextToColumns上按F1
    -----------------TextToColumns 方法
    参阅应用于示例特性将包含文本的一列单元格分解为若干列。expression.TextToColumns(Destination, DataType, TextQualifier, ConsecutiveDelimiter, Tab, Semicolon, Comma, Space, Other, OtherChar, FieldInfo, DecimalSeparator, ThousandsSeparator, TrailingMinusNumbers)
    expression      必需。该表达式返回“应用于”列表中的对象之一。Destination      Variant 类型,可选。指定 Microsoft Excel 放置结果的位置的 Range 对象。如果该区域大于一个单元格,请使用左上角的单元格。DataType      XlTextParsingType 类型,可选。将被拆分到多列中的文本的格式。XlTextParsingType 可为以下 XlTextParsingType 常量之一。 
    xlDelimited 默认值 
    xlFixedWidth TextQualifier      XlTextQualifier 类型,可选。XlTextQualifier 可为以下 XlTextQualifier 常量之一。 
    xlTextQualifierDoubleQuote 为默认值 
    xlTextQualifierNone 
    xlTextQualifierSingleQuote ConsecutiveDelimiter      Variant 类型,可选。如果该值为 True,则 Microsoft Excel 将把连续的分隔符识别为单个分隔符。默认值为 False。Tab      Variant 类型,可选。如果该值为 True,则 DataType 为 xlDelimited 且以制表符为分隔符。默认值为 False。Semicolon      Variant 类型,可选。如果该值为 True,则 DataType 为 xlDelimited 且以分号为分隔符。默认值为 False。Comma      Variant 类型,可选。如果该值为 True,则 DataType 为 xlDelimited 且以逗号为分隔符。默认值为 False。Space      Variant 类型,可选。如果该值为 True,则 DataType 为 xlDelimited 且以空格为分隔符。默认值为 False。Other      Variant 类型,可选。如果该值为 True,则 DataType 为 xlDelimited 且以 OtherChar 参数指定的字符为分隔符。默认值为 False。OtherChar      Variant 类型,可选(当 Other 为 True 时为必需)。当 Other 为 True 时的分隔符。如果指定了若干字符,则仅使用其中的第一个字符而忽略其他字符。FieldInfo      Variant 类型,可选。包含单列数据拆分信息的数组。对本参数的解释取决于 DataType 的值。如果此数据由分隔符分隔,则本参数为由两元素数组组成的数组,其中每个两元素数组指定一个特定列的转换选项。第一个元素为列标(从 1 开始),第二个元素是 xlColumnDataType 常量之一,用以指定该列的拆分方式。XlColumnDataType 可为以下 XlColumnDataType 常量之一。 
    xlGeneralFormat 表示常规 
    xlTextFormat 表示文本 
    xlMDYFormat 表示 MDY 日期xlDMYFormat 表示 DMY 日期xlYMDFormat 表示 YMD 日期xlMYDFormat 表示 MYD 日期xlDYMFormat 表示 DYM 日期xlYDMFormat 表示 YDM 日期xlEMDFormat 表示 EMD 日期xlSkipColumn 表示跳过列
     只有在安装并选定了台湾地区语言支持时才可使用 xlEMDFormat。xlEMDFormat 常量指定使用台湾地区纪元日期。列识别符可为任意顺序。在输入数据中,如果某一特定列没有给定列识别符,那么该列以 General 形式进行拆分。在下例中,跳过了源数据的第三列,第一列以文本形式进行拆分,而其余各列均以 General 形式进行拆分。Array(Array(3, 9), Array(1, 2))

    如果源数据有固定宽度的列,则每个两元素数组的第一个元素将指定列中起始字符的位置(以整数的形式,0(零)表示第一个字符)。第二个元素以从 1 到 9 的数字指定该列的拆分选项,如上表所示。下例从固定宽度的文件中拆分出两列,第一列从行起始处开始,长度为 10 个字符。第二列从第 15 个字符开始,直至行尾。为避免包含从第 10 个字符到第 15 个字符之间的字符,Microsoft Excel 加入了一个被跳过的列数据项。Array(Array(0, 1), Array(10, 9), Array(15, 1))

    DecimalSeparator      String 类型,可选。表示在识别数字时,Microsoft Excel 使用的小数分隔符。默认设置为系统设置。ThousandsSeparator      String 类型,可选。表示在识别数字时,Excel 使用的千位分隔符。默认设置为系统设置。TrailingMinusNumbers      Variant 类型,可选。以减号字符开始的数字。下表显示了使用不同的导入设置向 Excel 中导入文本时的结果。数字结果显示在最右边的列中。系统十位分隔符 系统千位分隔符 十位分隔符值 千位分隔符值 原始文本 单元格的值(数据类型) 
    句号 逗号 逗号 句号 123.123,45 123,123.45(数字) 
    句号 逗号 逗号 逗号 123.123,45 123.123,45(文本) 
    逗号 句号 逗号 句号 123,123.45 123,123.45(数字) 
    句号 逗号 句号 逗号 123 123.45 123 123.45(文本) 
    句号 逗号 句号 空格 123 123.45 123,123.45(数字) 示例
    本示例将剪贴板中的内容(以空格分隔的文字表格)转换为 Sheet1 中单独的列内。可用“记事本”或“写字板”(或其他文本编辑器)创建简单的以空格分隔的表格,将该表格复制到剪贴板,再切换到 Microsoft Excel,然后运行本示例。Worksheets("Sheet1").Activate
    ActiveSheet.Paste
    Selection.TextToColumns DataType:=xlDelimited, _
        ConsecutiveDelimiter:=True, Space:=True
      

  6.   

    多谢spt_petrolor  我大概了解了!!