返回列表 上一主題 發帖

使用程式將記事本內容整理資料

  1. Sub Ex()
  2. Dim ay(9), Ary()
  3. fs = ThisWorkbook.Path & "\txt.txt"
  4. Open fs For Input As #1
  5. Do While Not EOF(1)
  6.    Line Input #1, mystr
  7.       If mystr = "#" Then tn = True: tk = False: GoTo 10
  8.       If tn = True And Not IsNumeric(Split(mystr, " ")(0)) Then ty = Split(mystr, " ")(0): tn = False: GoTo 10
  9.       If mystr = "%" Then tn = False: tk = True: GoTo 10
  10.       If tn = False And tk = True And Val(mystr) <> 0 Then
  11.          ar = Split(mystr, " ")
  12.          ay(0) = ty & ar(0)
  13.          For i = 1 To UBound(ar)
  14.             If ar(i) <> "" Then
  15.                j = j + 1
  16.                ay(j) = ar(i)
  17.             End If
  18.          Next
  19.          ReDim Preserve Ary(s)
  20.          Ary(s) = ay
  21.          s = s + 1: j = 0
  22.        End If
  23. 10
  24. Loop
  25. Close #1
  26. [A2].Resize(s, 9) = Application.Transpose(Application.Transpose(Ary))
  27. End Sub
複製代碼
學海無涯_不恥下問

TOP

tn,tk此2變數是用來做截取資料開始及片段結束依據
可由If mystr = "#" Then tn = True: tk = False: GoTo 10
這行就是#那一行被讀入時,用tn告訴程式下一行開始就是資料抬頭區域
If mystr = "%" Then tn = False: tk = True
就是明細的開始
沒這2個變數當然執行不來囉
學海無涯_不恥下問

TOP

就因為tn,tk的組合狀況會有多種組合,所以能用來做為資料擷取的開始與結束判斷依據
遇到#的下一行文字T409P086AA01就是id號碼的前置字串
有了id號碼的前置字串後若遇到該行為%接下來的各行前面是數字時
則該數字與id號碼的前置字串的組合就是整組id碼
直到在次遇到#才再重新取得id號碼的前置字串
學海無涯_不恥下問

TOP

那個判斷式後面是我們要指定變數的值是甚麼?
而不是取得那時的變數是甚麼值
學海無涯_不恥下問

TOP

        靜思自在 : 屋寬不如心寬。
返回列表 上一主題