分享

Excel VBA 7.33 TXT数据如何按指定行数写入?继续扩展Excel功能

 我的人生宝库 2020-01-31

之前我们分享了如何通过VBA来讲TXT文件的数据导入Excel的方法,增加Excel的功能,也给我们在处理多样化的数据源的过程中,提供了很大的方便,不过我们也看到了,在之前写入数据的过程中,一次只能写入TXT的一行数据,如果我们恰好是希望将多行txt数据写入到Excel的一行呢?

场景简介

假设我们当前有这样一份数据

Excel VBA 7.33 TXT数据如何按指定行数写入?继续扩展Excel功能

网络导出的数据中,经常会碰到这样的数据,我们理想中的一行数据因为代码转行或者是分隔符等原因,爬取的数据被分割在了txt的每一行,假设我们正好要汇总的数据有四行,那么我们如何将这几行数据汇总在一行呢?

代码区

本案例中,我们需要实现的是这样的效果。

Excel VBA 7.33 TXT数据如何按指定行数写入?继续扩展Excel功能

即每次循环4行,那么在代码中要如何实现呢?

Sub test()With Application.FileDialog(msoFileDialogFolderPicker) If .Show = -1 Then pathn = .SelectedItems(1) End IfEnd Withk = 0i = Cells(Rows.Count, 1).End(xlUp).Rownum = InputBox('请输入行数', '程序会按照指定的行数循环')f = Dir(pathn & '\' & '\*.txt')Do While f <> '' Filename = pathn & '\' & f Open Filename For Input As #1 Do While Not EOF(1) For l = 1 To num Line Input #1, s Cells(i + 1, l) = s Next l i = i + 1 Loop Close #1f = Dir()LoopEnd Sub

我们来看看效果,再选择完指定的txt文件之后,会让我们输入一个数字

Excel VBA 7.33 TXT数据如何按指定行数写入?继续扩展Excel功能

确定循环的行数,因为我们这里已经确定,4行一循环,所以这里输入4,

然后数据就成功的按照我们的要求汇总在一起了

Excel VBA 7.33 TXT数据如何按指定行数写入?继续扩展Excel功能

代码分析

今天的代码还是比较的简单的,如果之前的几节大家已经了解的话,今天还是比较好理解的

num = InputBox('请输入行数', '程序会按照指定的行数循环')

这里还是继续使用inputbox函数来实现交互,输入指定的行数,这里可以灵活输入,根据你实际的数据样式来进行输入

Do While f <> '' Filename = pathn & '\' & f Open Filename For Input As #1 Do While Not EOF(1) For l = 1 To num Line Input #1, s Cells(i + 1, l) = s Next l i = i + 1 Loop Close #1f = Dir()Loop

这段代码就是今天的核心代码

Open Filename For Input As #1

说先我们现在电脑模拟打开一个txt文件,并且将它标记为编号#1

然后开始在txt文件内部循环,如果还没有到达文件的末尾,就进入第二个小循环

For l = 1 To num Line Input #1, s Cells(i + 1, l) = s Next l

这个小循环就是针对我们输入的行数进行循环的

本案例中当我们完成了4行的循环之后,跳出for循环,同时Excel的行数+1

Excel VBA 7.33 TXT数据如何按指定行数写入?继续扩展Excel功能

完成一个4行的循环之后,Excel行数才会+1,这个时候如果还没有达到txt的结尾,继续进入下一个txt内部的4行循环

Excel VBA 7.33 TXT数据如何按指定行数写入?继续扩展Excel功能

=======================================================

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多