Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2134|回复: 5

[已解决]谢谢天堂鼠老师,导出txt

[复制链接]
发表于 2011-4-16 18:36 | 显示全部楼层 |阅读模式
本帖最后由 lhj323323 于 2011-4-17 20:15 编辑

老师:
我想把EXCEL中某列数据提取不重复值后,并再分情况添加标识后,以txt格式导出。请问如何写?谢谢。(附件在1楼最下面)

这段虽能成功,但是导出的位数不足,比如000862,导出来就变成862了,前面的三个0都不见了
Sub 导出() '阿童木
    Dim StrJG$, MyFName$
    Dim fso As Object
    Dim MyTxt As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    '文件路径
    MyFName = ThisWorkbook.Path & "\TXT.TXT"
    '要导出的字符
    StrJG = Join(Application.Transpose(Sheet1.Range("j2:j" & Sheet1.Range("j65536").End(xlUp).Row)), vbCrLf)
    '创建文件
    Set MyTxt = fso.CreateTextFile(Filename:=MyFName, OverWrite:=True)
    '写入字符
    MyTxt.Write StrJG
    '关闭文件
    MyTxt.Close
    '清空对象
    Set MyTxt = Nothing
    Set fso = Nothing
    MsgBox "数据已导出到文本文件,保存位置为当前文件夹,文件名为TXT.TXT"
End Sub

最佳答案
2011-4-17 19:18
要空一行是不?那就再改点:
ar1 = Sheet1.Range("j2:j" & Sheet1.Range("j65536").End(xlUp).Row)
    For i% = 1 To UBound(ar1)
        StrJG = StrJG & vbCrLf & Right("000000" & ar1(i, 1), 6)
    Next

导出txt.rar

12.02 KB, 下载次数: 11

 楼主| 发表于 2011-4-16 22:21 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2011-4-17 11:49 | 显示全部楼层
回复

使用道具 举报

发表于 2011-4-17 12:36 | 显示全部楼层

StrJG= Join(Application.Transpose(Sheet1.Range("i2:i" & Sheet1.Range("i65536").End(xlUp).Row)), vbCrLf)
换成:
ar1 = Sheet1.Range("j2:j" & Sheet1.Range("j65536").End(xlUp).Row)
    StrJG = Right("000000" & ar1(1, 1), 6)
    For i% = 2 To UBound(ar1)
        StrJG = StrJG & vbCrLf & Right("000000" & ar1(i, 1), 6)
    Next
    也可不改代码,改单元格中的内容成六位的文本而不是通过设置单元格格式得到


第二个,另涉及一个去重复的问(其它与这个相同),可用字典来去重复(你以前的帖子中有很多字典的,可翻来稍改下就成),也可用高级筛选不重复值来去生重复(可录个宏就成了)
   
回复

使用道具 举报

 楼主| 发表于 2011-4-17 12:58 | 显示全部楼层
本帖最后由 lhj323323 于 2011-4-17 14:17 编辑

回复 djyjysxxs 的帖子

天堂鼠老师:
您说的这一句,我添加进去后,测试成功了,但尚有一个小问题,就是,导入到外部文件txt时,是从txt的第一行导入的,如何才能将数据导入到txt的第二行开始,而不是第一行开始。

条件股1是我希望达到的效果,
条件股2是目前程序能完成的效果
两者的区别在于导入到txt的起始行不同







导出.rar

288 Bytes, 下载次数: 15

回复

使用道具 举报

发表于 2011-4-17 19:18 | 显示全部楼层    本楼为最佳答案   
要空一行是不?那就再改点:
ar1 = Sheet1.Range("j2:j" & Sheet1.Range("j65536").End(xlUp).Row)
    For i% = 1 To UBound(ar1)
        StrJG = StrJG & vbCrLf & Right("000000" & ar1(i, 1), 6)
    Next
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-23 13:05 , Processed in 0.507504 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表