ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 5910|回复: 7

[求助]如何合并行?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-7-8 13:37 | 显示全部楼层 |阅读模式

我有一个比较大的文本文件,共有20多万条记录,两行合并起来是一条完整的记录,其格式如下:

001164009952 中国人民银行长治市中心支行 山西省长治市太行西街 135 号 2 00000

001164111385 中国人民银行怀仁县支行 山西省朔州市怀仁县迎宾东街 2 00000

……

我的问题是:如何将第二行的数据附加到第一行的后面,第四行的数据附加到第三行的后面,以此类推,最后的结果是:每一行都是一条完整的记录,每行用特殊的符号(如“|”)分成4个字段(代码,单位名称,地址,邮编),便于导入access数据库中进行查询。使用vba或手工操作都行。

这么大的文件,我用替换方法时总是不能完成(显示word程序没有响应)。因为上传文件的限制,我提供的附件很小。

upJSeP72.rar (2.76 KB, 下载次数: 33)
[此贴子已经被作者于2005-7-8 13:39:02编辑过]

TA的精华主题

TA的得分主题

发表于 2005-7-8 16:57 | 显示全部楼层

这个问题我以前碰到过,而且到目前为止解决尚没有好的解决办法,我是用下述“临时方案”解决问题的:

1、用UltraEdit(目前的常用版本大约是9或10左右)软件来进行处理,这个文字处理软件对于大文本处理有最快的处理速度,但有一个BUG,对某些中文字符处理时会发生“歧变”,而且该突变无规律可寻。

2、将大文本分解为二到三个文本再进行处理,我的经验是,文本小于五百K时,处理速度还是基本正常的。

3、由于我未用过OFFICEXP或2003,因此,改用新版后不知速度有无提高?

说到底,这大概是由于WROD本身是用VB编出来的,本身就是一个“高级语言解释器”,因此远没有一些用C语言或低级语言编出来的东东效率高(不知对否,还是请老大来说吧)。

TA的精华主题

TA的得分主题

发表于 2005-7-8 17:28 | 显示全部楼层
以下是引用sdbbsdbb在2005-7-8 16:57:40的发言:

这个问题我以前碰到过,而且到目前为止解决尚没有好的解决办法,我是用下述“临时方案”解决问题的:

1、用UltraEdit(目前的常用版本大约是9或10左右)软件来进行处理,这个文字处理软件对于大文本处理有最快的处理速度,但有一个BUG,对某些中文字符处理时会发生“歧变”,而且该突变无规律可寻。

2、将大文本分解为二到三个文本再进行处理,我的经验是,文本小于五百K时,处理速度还是基本正常的。

3、由于我未用过OFFICEXP或2003,因此,改用新版后不知速度有无提高?

说到底,这大概是由于WROD本身是用VB编出来的,本身就是一个“高级语言解释器”,因此远没有一些用C语言或低级语言编出来的东东效率高(不知对否,还是请老大来说吧)。

步兵兄有些话是正确的,但有些话是错误的,WROD当然是由汇编语言编出的!

楼主的这个问题,我觉得在WORD中直接以文本文件的处理更好一些,你需要的结果是放在哪里,也写清楚。

请楼主直接上传你的文本文件,我看一下。

TA的精华主题

TA的得分主题

发表于 2005-7-8 17:49 | 显示全部楼层

老大,我看书上说offie全部是用VB编的,你怎么说“汇编语言”?

只听说windows是用C和汇编语言编写的啊!

TA的精华主题

TA的得分主题

发表于 2005-7-8 18:16 | 显示全部楼层

大约有些关键部分是用汇编搞的吧,否则这么大一个东东全靠VB,恐怕“盖子”自己都不放心。。。。。

另外,不可否认,对于过大的文件,用WORD来处理的确太太太慢,这之间只怕有一个临界点,一旦超过该值,则处理时间与处理的条数将不再按原有比例。我们没有必要去求证该点是否存在或值是多少,反正我先定个“霸王规矩”,WORD不适合处理2M以上的文本,可行?(大于2M,拆分后再处理)

应用为王,够用就行

[此贴子已经被作者于2005-7-8 18:17:59编辑过]

TA的精华主题

TA的得分主题

发表于 2005-7-8 21:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

请楼主将以下代码粘贴于WORD文档的THISDOCUMENT模块下,并据实修改之,然后运行。

'* +++++++++++++++++++++++++++++ '* Created By I Love You_Word!@ExcelHome 2005-7-8 21:59:37 '仅测试于System: Windows NT Word: 10.0 Language: 2052 '^The Code CopyIn [ThisDocument-ThisDocument]^' '* -----------------------------

Option Explicit Sub Example() Dim InputData As String, MyFile As String, MyString As String Dim TempString As String, N As Byte Dim Fs As Object, A As Object Debug.Print Timer '创建一个对系统文件夹的访问 Set Fs = CreateObject("Scripting.FileSystemObject") '创建一个文本文件,如果不存在,则创建之,可以修改路径 Set A = Fs.CreateTextFile("D:\Temp\TestFile.txt", True) '定义源文本文件,请在此修改 MyFile = "D:\Temp\Example.Txt" Open MyFile For Input As #1 ' 为输入打开文件。 Do While Not EOF(1) ' 检查文件尾。 Line Input #1, InputData ' 读入一行数据 '如果此行数据不为空并且不是全部为空格的话 If Len(InputData) > 1 And VBA.Replace(InputData, " ", "") <> "" Then '计数 N = N + 1 If N = 1 Then '根据指定的字符位置进行提取字符串 MyString = VBA.Mid(InputData, 1, 12) & "|" MyString = MyString & Replace(VBA.Mid(InputData, 13, 50), " ", "") & "|" Else MyString = MyString & Replace(VBA.Mid(InputData, 1, 45), " ", "") & "|" MyString = MyString & Replace(VBA.Mid(InputData, 46, 20), " ", "") & "|" '每次到第二行后,写入指定的文本文件中,并初始化MyString变量 N = 0: A.WriteLine (MyString): MyString = "" End If End If LP: Loop A.Close Close #1 ' 关闭文件。 Debug.Print Timer End Sub '----------------------

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-7-9 09:23 | 显示全部楼层

首先对各位的热心解答表示感谢,待我消化吸收一下,如有问题还要向各位请教!

另外请问sdbbsdbb:将大文本分解为二到三个文本不失为一个好的办法,因为太大的文本(我的这个文本文件有15m大)word处理起来会比较慢,那么如何分解呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-7-9 16:59 | 显示全部楼层

用老大的代码还真管用,速度非常快(1分钟内就搞定了)!

另外我将原始的文本文件在这儿贴出来,供大家研究。

eZcVG2Up.rar (231.32 KB, 下载次数: 32)
[此贴子已经被作者于2005-7-9 17:12:15编辑过]

0zgUjRvS.rar

250 KB, 下载次数: 20

80bLzrWJ.rar

250 KB, 下载次数: 16

7PJazxv2.rar

250 KB, 下载次数: 15

Eugan05W.rar

250 KB, 下载次数: 13

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

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-15 10:18 , Processed in 0.040348 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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