假设我们当前有这样一份数据 网络导出的数据中,经常会碰到这样的数据,我们理想中的一行数据因为代码转行或者是分隔符等原因,爬取的数据被分割在了txt的每一行,假设我们正好要汇总的数据有四行,那么我们如何将这几行数据汇总在一行呢?
本案例中,我们需要实现的是这样的效果。 即每次循环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文件之后,会让我们输入一个数字 确定循环的行数,因为我们这里已经确定,4行一循环,所以这里输入4, 然后数据就成功的按照我们的要求汇总在一起了
今天的代码还是比较的简单的,如果之前的几节大家已经了解的话,今天还是比较好理解的 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 完成一个4行的循环之后,Excel行数才会+1,这个时候如果还没有达到txt的结尾,继续进入下一个txt内部的4行循环 ======================================================= |
|
来自: 我的人生宝库 > 《电脑(软件应用)》