Excel精英培训网

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

复杂的VBA条件调用文本文件,跪求高手!!!!!!

[复制链接]
发表于 2016-12-9 10:52 | 显示全部楼层 |阅读模式
TXT1.png
这是经过整理的文本文件,红色框表示下面会有几行,蓝色框表示除第一列外,后面还会有几个数据,如58102行红色框显示是6,所以下面会有从12-72,6行数据,蓝色框是21,后面就会有21个数据,而58116行蓝色框是22,表示这一部分会有22个数据。
再次申明,上面的文本文档是经过整理的,实际的应该是如下图。所以还需要判定从12开始每隔12个数另起一新行。最终需要如图3的EXCE表,跪求大神提供代码!!!!!!附件是两个文本文档,需要转换的是2.txt文档。
TXT2.png
excel.png
VBA按复杂条件调用文本文件.zip (9.14 KB, 下载次数: 8)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-12-9 15:17 | 显示全部楼层
是把2.txt整理成1.txt的样子吗?还是其他什么意思?
如果是前者,不难。如果是后者,写清楚求吧
回复

使用道具 举报

 楼主| 发表于 2016-12-9 15:59 | 显示全部楼层
上清宫主 发表于 2016-12-9 15:17
是把2.txt整理成1.txt的样子吗?还是其他什么意思?
如果是前者,不难。如果是后者,写清楚求吧

要求是把2.txt整理成EXCEL表的样子,因为要对数据做一些说明,所以先整成了1.txt的样子。
回复

使用道具 举报

发表于 2016-12-11 16:04 | 显示全部楼层
试试
Sub test()
Cells.Clear
Open ThisWorkbook.Path & "/2.txt" For Input As #1
k1% = 1: k2% = 6: k3% = 1
r% = 1: c% = 0
Do While Not EOF(1)
   Line Input #1, sl$
   sl = Replace(Trim(sl), Chr(10), "")
   If Len(sl) Then
   For Each tmp In Split(sl, " ")
       If Len(tmp) Then
          n1 = n1% + 1
          If k1 = 1 Then
             If n1 <= 6 Then
                c = c + 1
             Else
                k2 = Cells(r, c) + 1
                k3 = Cells(r, c - 1)
                r = r + 1
                c = 2
                k1 = 0
                n1 = 1
             End If
          Else
             If n1 <= k2 Then
                c = c + 1
             Else
                k3 = k3 - 1
                r = r + 1
                n1 = 1
                If k3 Then
                   c = 2
                Else
                   c = 1
                   k1 = 1
                End If
             End If
          End If
        Cells(r, c) = tmp
       End If
   Next
   End If
Loop
Close #1
End Sub
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 07:52 , Processed in 0.266230 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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