Excel精英培训网

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

[已解决]用同样的方法,却只能提取一部分数据,求助。谢谢ghostjiao老师和grf1973老师

[复制链接]
发表于 2016-7-7 11:10 | 显示全部楼层 |阅读模式
本帖最后由 lhj323323 于 2016-7-7 23:23 编辑

老师:
本求助贴是从N个指定路径提取全部TXT的指定字段,导入到模板的工作表【结果表】中,
我用同样的方法,提取【主营业务】和【控股股东和实际控制人】
只有前者可能提取,而,后者却提取不了。

如有空的话,请老师帮忙看看,我错在哪里了,先谢谢了。
求助.rar (443.42 KB, 下载次数: 21)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-7-7 15:21 | 显示全部楼层
经测试 300037提取到数组A里的内容,从387行到2375行内容丢失。。。。。。

提取.rar

17.9 KB, 下载次数: 3

回复

使用道具 举报

 楼主| 发表于 2016-7-7 15:30 | 显示全部楼层
grf1973 发表于 2016-7-7 15:21
经测试 300037提取到数组A里的内容,从387行到2375行内容丢失。。。。。。

谢谢老师

你在楼上的附件,好像和我一楼的差不多,看来无解了。

那你知道消失的原因吗?
回复

使用道具 举报

发表于 2016-7-7 15:52 | 显示全部楼层
这不是代码原因是,是数据源的原因。在Txt第390行“☆财务分析☆ ◇300037 新宙邦 更新日期:2016-04-20◇ 港澳资讯 灵通V6.0” 前面加个回车键就解决了。
回复

使用道具 举报

发表于 2016-7-7 16:02 | 显示全部楼层
  1. Sub dmeo()
  2.     Dim str$, fso, txt
  3.     Dim MyPath$, myName$, k%
  4.     Set fso = CreateObject("scripting.filesystemobject")
  5.     MyPath = ThisWorkbook.Path & "\深圳"
  6.     myName = Dir(MyPath & "*.txt")
  7.     Do While myName <> ""
  8.         Set txt = fso.OpenTextFile(MyPath & myName, 1)
  9.         Do While txt.AtEndOfStream = False
  10.             str = txt.readline
  11.             If InStr(str, "【1.控股股东与实际控制人】") Then
  12.                 Stop
  13.             End If
  14.         Loop
  15.         txt.Close
  16.         myName = Dir
  17.     Loop
  18. End Sub
复制代码
用textstream读取数据是能读取到的,你可以看看,不是在同一行你这样判断也不行啊,岂不是数据不全?
回复

使用道具 举报

 楼主| 发表于 2016-7-7 19:50 | 显示全部楼层
本帖最后由 lhj323323 于 2016-7-7 19:52 编辑
grf1973 发表于 2016-7-7 15:52
这不是代码原因是,是数据源的原因。在Txt第390行“☆财务分析☆ ◇300037 新宙邦 更新日期:2016-04-20◇  ...

grf1973老师:

我先进行如下的测试,请看看

下图是另一个能正常提取的文档002787.txt华源包装,没有作任何修改
002787.png


下图是本贴的焦点,300037.txt,修改前的。没有加回车

300037.png

下图是修改后的300037.txt,加回车,同时把txt内300037改为【改300037】以方便核对
改300037.png


我把上述三个txt文档放在同一文件夹内,同时提取,来看区别
文件夹一览.png

下图是导出结果
导出结果.png

002787和原300037的格式完全一样(至少目测是一样的),前者没有加回车,仍能提取出M\N两列
300037按老师您的建议,进行了修改,即【改300037】,现在能提取M\N两列了

综上,现在的问题就变得复杂了
1、数据源TXT,每年变化四次,即,每季度变化一次,TXT个数目前是2870多个,以后只会多,不会少。而且是向证券交易所购买的数据源,其属于格式文档,缺少一个回车,按理说讲不通,就算是真的缺少一个回车,我们作为购买者,面对的证券交易所这种地位极其悬殊的出售者,基本上无法让其注意格式的质量。
2、提取的M\N列,无数据的原因有两种,第1种,是本身就没有这个信息。第2种,即是300037这种,有信息,但导不出来。
3、300037和002787在这一信息的格式,经过目测,是完全一样的。加回车,纵然能解决问题,但不具有现实意义。

由于上述3方面的原因
如果在实际工作中,运行了按纽,发现M\N列无数据,就得打开每一个无数据的TXT文档,通过查找功能逐一添加回车,有点难以想象工作量的巨大。
回复

使用道具 举报

 楼主| 发表于 2016-7-7 19:56 | 显示全部楼层
ghostjiao 发表于 2016-7-7 16:02
用textstream读取数据是能读取到的,你可以看看,不是在同一行你这样判断也不行啊,岂不是数据不全?

老师:

数据源是全的,我没有作任何修改。



回复

使用道具 举报

发表于 2016-7-7 20:30 | 显示全部楼层
lhj323323 发表于 2016-7-7 19:56
老师:

数据源是全的,我没有作任何修改。

我说按照你的方法提取,提取的数据不全,因为你要的数据不在同一行,你用我的程序F8一步一步看看能得到数据的,只是不在一行
回复

使用道具 举报

发表于 2016-7-7 21:07 | 显示全部楼层    本楼为最佳答案   
用常规的 line input 提取就不存在问题。

提取.rar

17.99 KB, 下载次数: 6

回复

使用道具 举报

 楼主| 发表于 2016-7-7 23:10 | 显示全部楼层
ghostjiao 发表于 2016-7-7 20:30
我说按照你的方法提取,提取的数据不全,因为你要的数据不在同一行,你用我的程序F8一步一步看看能得到数 ...

就是就是

以前的F10数据,和现在我求助所附的F10数据,在格式上发生了很大的变化。

下图是以前的格式(它的表间有竖线,之前,蓝桥玄霜老师基于这种格式的TXT帮我成功地写出了提取它们的语句)
快照1.png

下图是现在的格式,也就是这几天我发的求助贴所采用的格式(现在的格式变化,之前的语句就一点也没法提取,所以才搞出这么多明堂来)
快照2.png



回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 16:02 , Processed in 0.341258 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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