Excel精英培训网

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

[已解决]txt提取数据,原数据有6W+,求大神帮助

[复制链接]
发表于 2022-2-23 16:39 | 显示全部楼层 |阅读模式
3学分

txt提取数据,原数据有6W+,求大神帮助,需要把列表.txt文件( 按照excel演示,要求,)提取到数据工作表对应的字段


最佳答案
2022-2-23 16:39
提供的数据有不规范的地方。

提取TXT文本到Excel.V1.Compressed2.gif

txt提取,求助.zip

23.83 KB, 下载次数: 24

最佳答案

查看完整内容

提供的数据有不规范的地方。
发表于 2022-2-23 16:39 | 显示全部楼层    本楼为最佳答案   
提供的数据有不规范的地方。

提取TXT文本到Excel.V1.Compressed2.gif

评分

参与人数 1学分 +1 收起 理由
756082@qq.com + 1 我和小伙伴都惊呆了

查看全部评分

回复

使用道具 举报

发表于 2022-2-23 20:38 | 显示全部楼层
提供代码+视频讲解一条龙服务:
1、代码如下:
Sub byWanao()
    Dim fN$, lineText$, arr, jsNum%, Dic As Object, i%, j%, getData$

    Set Dic = CreateObject("Scripting.Dictionary")
    Dic(2) = 2
    Dic(3) = 18
    Dic(4) = 17
    Dic(5) = 10
    Dic(6) = 9
    Dic(7) = 14
    Dic(8) = 11
    Dic(9) = 13
    Dic(10) = 8
    Dic(11) = 4
    Dic(12) = 1
    Dic(13) = 6
    Dic(14) = 5


    jsNum = 1
    fN = ThisWorkbook.Path & "\列表.txt"
    Open fN For Input As #1
    Do While Not EOF(1)
        Line Input #1, lineText
        jsNum = jsNum + 1
        arr = Split(Replace(lineText, """", ""), ",")
        For j = 2 To 14
            getData = arr(Dic(j))
            If j = 2 Then
                Cells(jsNum, j) = Split(getData, " ")(1)
                Cells(jsNum, j - 1) = Split(Split(getData, " ")(0), ":")(1)
            Else
                Cells(jsNum, j) = Split(getData, ":")(1)
            End If
        Next
    Loop
    Close #1
End Sub


2、视频讲解地址:
https://www.zhihu.com/zvideo/1479915144460955648

评分

参与人数 1学分 +2 收起 理由
756082@qq.com + 2 我和小伙伴都惊呆了

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2022-2-23 22:25 | 显示全部楼层
大神,卡死.然后读完了没反应 ,
回复

使用道具 举报

发表于 2022-2-24 05:15 | 显示全部楼层
不好意思,忘了你是超大数据量了,代码改了一下:
  1. Sub byWanao()
  2.     Dim fN$, lineText$, arr, jsNum%, Dic As Object, i%, j%, getData$, brr(1 To 65535, 1 To 14)
  3.    
  4.     Set Dic = CreateObject("Scripting.Dictionary")
  5.     Dic(2) = 2
  6.     Dic(3) = 18
  7.     Dic(4) = 17
  8.     Dic(5) = 10
  9.     Dic(6) = 9
  10.     Dic(7) = 14
  11.     Dic(8) = 11
  12.     Dic(9) = 13
  13.     Dic(10) = 8
  14.     Dic(11) = 4
  15.     Dic(12) = 1
  16.     Dic(13) = 6
  17.     Dic(14) = 5
  18.    
  19.    
  20.     jsNum = 0
  21.     fN = ThisWorkbook.Path & "\列表.txt"
  22.     Open fN For Input As #1
  23.     Do While Not EOF(1)
  24.         Line Input #1, lineText
  25.         jsNum = jsNum + 1
  26.         arr = Split(Replace(lineText, """", ""), ",")
  27.         For j = 2 To 14
  28.             getData = arr(Dic(j))
  29.             If j = 2 Then
  30.                 brr(jsNum, j) = Split(getData, " ")(1)
  31.                 brr(jsNum, j - 1) = Split(Split(getData, " ")(0), ":")(1)
  32.             Else
  33.                 brr(jsNum, j) = Split(getData, ":")(1)
  34.             End If
  35.         Next
  36.     Loop
  37.     Close #1
  38.     Sheet2.[a2].Resize(jsNum + 1, 14) = brr
  39. End Sub
复制代码


回复

使用道具 举报

 楼主| 发表于 2022-2-24 10:50 | 显示全部楼层
wanao2008 发表于 2022-2-24 05:15
不好意思,忘了你是超大数据量了,代码改了一下:

谢谢大神,等了4-5分钟,不管是6W+还是10+, 都刷出来一条信息 .
微信图片_20220224104958.png
回复

使用道具 举报

发表于 2022-2-24 18:55 | 显示全部楼层
756082@qq.com 发表于 2022-2-24 10:50
谢谢大神,等了4-5分钟,不管是6W+还是10+, 都刷出来一条信息 .

我测试你的当前附件“列表.txt”文件没有任何问题,那表示你的6W+或10W的数据有问题,
二种方法,一是你手动从6W+取出1W左右的数据测试一下,
再就是你把附件传上来我看一下问题在哪?

下面为读取数据演示:
jdfw.gif
回复

使用道具 举报

 楼主| 发表于 2022-2-24 19:49 | 显示全部楼层
wanao2008 发表于 2022-2-24 18:55
我测试你的当前附件“列表.txt”文件没有任何问题,那表示你的6W+或10W的数据有问题,
二种方法,一是你 ...

可以加下你的QQ或者微信吗.,

回复

使用道具 举报

发表于 2022-2-25 05:15 | 显示全部楼层
ahn 发表于 2022-2-24 19:14
提供的数据有不规范的地方。

你这不是取出来了吗?
回复

使用道具 举报

 楼主| 发表于 2022-2-25 09:26 | 显示全部楼层
ahn 发表于 2022-2-24 19:14
提供的数据有不规范的地方。

大神,!!! 我已經加你QQ了.,!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-16 13:20 , Processed in 0.331745 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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