Excel精英培训网

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

[已解决]txt提取多个指定字段

[复制链接]
发表于 2017-7-19 15:05 | 显示全部楼层 |阅读模式
本帖最后由 tcmsod 于 2017-7-19 21:48 编辑

需提取txt中 Purchase?order?:?和Customer?Po: 后的字符,以及数字1开头后字符到excel,详见以下描述及附件说明,请高手抽空解答,谢谢。

期待结果(将符合结果分开三列写到excel表中A:C三列)
VV114937_3PO99054659-1ME73E0227940
RR242495_0PO99027099-199360


实际运行结果(第1列结果没有提取成功,B:C二列提取结果错行)
PO99054659-1
ME73E0227940
PO99027099-1
99360


代码:

Sub test()
    Dim ss As String, a%
    Open "E:\input\12\po2.txt" For Input As #1
    Do While Not EOF(1)
        Input #1, ss
        ss = Application.Trim(ss)
          If ss Like "Purchase?order?:?" & "*" Or ss Like "Customer?Po: " & "*" Or ss Like "1 " & "*" & "USD" Then
            a = a + 1
            If ss Like "Purchase?order?:?" & "*" Then
              Cells(a, 2) = Replace(ss, "Purchase?order?:?", "")
            ElseIf ss Like "Customer?Po: " & "*" Then
              Cells(a, 3) = Replace(ss, "Customer?Po: ", "")
            Else
              Cells(a, 1) = Split(ss, " ")(0)
            End If
          End If
    Loop
    Close #1
End Sub

最佳答案
2017-7-19 17:05
  1. Sub test()
  2.     Dim ss As String, a%, b&
  3.     Open ThisWorkbook.Path & "\po2.txt" For Input As #1
  4.     a = 1
  5.     Do While Not EOF(1)
  6.         Input #1, ss
  7.         ss = Application.Trim(ss)
  8.             If ss Like "Purchase?order?:?" & "*" Then
  9.               Cells(a, 2) = Replace(ss, "Purchase?order?:?", "")
  10.               b = b + 1
  11.             ElseIf ss Like "Customer?Po: " & "*" Then
  12.               Cells(a, 3) = Replace(ss, "Customer?Po: ", "")
  13.               b = b + 1
  14.             ElseIf ss Like "1 " & "*" & "USD" & "*" Then
  15.               Cells(a, 1) = Split(ss, " ")(1)
  16.               b = b + 1
  17.             End If
  18.           If b = 3 Then a = a + 1: b = 0
  19.     Loop
  20.     Close #1
  21. End Sub
复制代码

附件.ZIP

28.23 KB, 下载次数: 14

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-7-19 17:05 | 显示全部楼层    本楼为最佳答案   
  1. Sub test()
  2.     Dim ss As String, a%, b&
  3.     Open ThisWorkbook.Path & "\po2.txt" For Input As #1
  4.     a = 1
  5.     Do While Not EOF(1)
  6.         Input #1, ss
  7.         ss = Application.Trim(ss)
  8.             If ss Like "Purchase?order?:?" & "*" Then
  9.               Cells(a, 2) = Replace(ss, "Purchase?order?:?", "")
  10.               b = b + 1
  11.             ElseIf ss Like "Customer?Po: " & "*" Then
  12.               Cells(a, 3) = Replace(ss, "Customer?Po: ", "")
  13.               b = b + 1
  14.             ElseIf ss Like "1 " & "*" & "USD" & "*" Then
  15.               Cells(a, 1) = Split(ss, " ")(1)
  16.               b = b + 1
  17.             End If
  18.           If b = 3 Then a = a + 1: b = 0
  19.     Loop
  20.     Close #1
  21. End Sub
复制代码
回复

使用道具 举报

发表于 2017-7-19 17:18 | 显示全部楼层
Sub test()
    Dim ss As String, a%, i%
    Open ThisWorkbook.Path & "\po2.txt" For Input As #1
    Do While Not EOF(1)
        Input #1, ss
        ss = Application.Trim(ss)
        
        Select Case i
        
            Case 0
                If ss Like "Purchase?order?:?" & "*" Then
                    a = a + 1
                    Cells(a, 2) = Replace(ss, "Purchase?order?:?", "")
                    i = 1
                End If
            
            Case 1
                If ss Like "Customer?Po: " & "*" Then
                    Cells(a, 3) = Replace(ss, "Customer?Po: ", "")
                    i = 2
                End If
   
            Case 2
                If ss Like "1 " & "*" Then
                    i = 0
                    Cells(a, 1) = Split(ss, " ")(1)
                End If

        End Select
    Loop
    Close #1
End Sub
回复

使用道具 举报

发表于 2017-7-19 18:13 | 显示全部楼层
If ss Like "Purchase[?]order[?]:[?]*"
这样更精准 , 否则
Purchase■order■:●  like也是 True

当然 , 此处没有问题.
回复

使用道具 举报

 楼主| 发表于 2017-7-19 21:50 | 显示全部楼层
谢谢两位大侠,测试都可以运行成功,只好按先后顺序采纳最佳
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 09:43 , Processed in 0.229894 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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