เพื่อมุ่งให้เกิดคุณภาพจากการอบรมสูงสุด Excel Expert Training ให้การอบรม Excel กลุ่มเล็กๆ ไม่เกิน 6 คนทุกคนสามารถเรียนรู้ Excel อย่างใกล้ชิด จะมาคนเดียวหรือมาเป็นกลุ่มแล้วนัดวันอบรมแบบส่วนตัวก็ได้ ผู้เข้าอบรมทุกคนสามารถติดตามเนื้อหาที่อบรมได้อย่างชัดเจนจากจอภาพด้านหน้าของตัวเอง
Results 1 to 5 of 5

Thread: regex เพื่อเลือกข้อมูลจาก Text file

  1. #1
    gaka
    Guest

    regex เพื่อเลือกข้อมูลจาก Text file

    คือผมพยายามที่จะดึงข้อมูลที่ต้องการออกจากรายงานที่ได้จากอีกระบบหนึ่ง ซึ่งเค้าใช้โปรแกรมเล็ก ๆ ในการแปลงจาก text ออกมาเป็นชุดข้อมูลแต่ปัญหาคือไม่มีคน แก้ source code ได้และไม่รู้ว่าเก็บชุดล่าสุดไว้ที่ไหน เลยเป็นปัญหาที่มาของคำถามเนื่องจากชุดข้อมูลมีลักษรณะเป็น 2-3 Layer คือ ตามไฟล์แนบ
    รายงาน....วันที่...ถึง...
    สำหรับสาขา 0000
    ลำดับ วันที่ รหัสประจำตัว ชื่อผู้ขาย จำนวนเงินสุทธิ มูลค่าเพิ่ม
    สาขาที่
    1 1/1/2015 0123456789023 บริษัท..A... 1000.00 70.00
    0000 สำนักงานใหญ่
    2 11/1/2015 0123456789024 บริษัท..B... 1000.00 70.00
    0001 สาขาAAA
    รวม 2 ข้อมูล 2000.00 140.00
    รายงาน....
    วันที่...ถึง...
    สำหรับสาขา 0001
    ลำดับ วันที่ รหัสประจำตัว ชื่อผู้ขาย จำนวนเงินสุทธิ มูลค่าเพิ่ม
    สาขาที่
    1 1/1/2015 0123456789025 บริษัท..C... 2000.00 140.00
    0000 สำนักงานใหญ่
    2 11/1/2015 0123456789024 บริษัท..B... 1000.00 70.00
    0001 สาขาAAA
    3 1/1/2015 0123456789025 บริษัท..C... 2200.00 140.00
    000 สาขาBBB
    รวม 3 ข้อมูล 5200.00 364.00
    รวมทั้งสิ้น 5 ข้อมูล 7200.00 504.00
    ซึ่งผมก็ทดลองจับออกมาได้ด้วย regular expression ด้วย pattern
    PHP Code:
    "^ \d*.*\n.*" 
    แต่มันไม่ได้ประโยค "สำหรับสาขา....." ออกมาเพื่อจัดให้ชุดข้อมูลว่ารายงานนี้มาจากสาขาไหน (ลองดูได้จาก message box ใน excel ที่แนบท้าย) นอกจากจะกลับไปใช้การอ่านtextทีละบรรทัด แล้วจับลูปว่าได้สาขาที่.... แล้วค่อยหาชุดข้อมูลผมก็ลองทำแต่มันจะได้แค่บรรทัดแรกบรรทัดเดียว ไม่สามารถจับบรรทัดที่สองได้คือขยายความว่าจะได้แต่บรรทัด
    1 1/1/2015 0123456789025 บริษัท..C... 2000.00 140.00
    แต่ขาด
    0000 สำนักงานใหญ่
    ไป
    ส่วนตัวพยายามคิดว่าถ้า regex จับชุดใหญ่ได้โดยเริ่มจาก
    สำหรับสาขา 0000
    ....
    ....
    ....
    รวม 2 ข้อมูล 2000.00 140.00
    (แต่ติดปัญหาว่าเขียน regex.pattern แบบนี้ไม่เป็น เพราะบรรทัดไม่เท่ากันเสมอไป)
    แล้วค่อยเอา pattern ที่ใช้จับ detail ในตอนแรกไปจับอีกชั้นหนึ่ง
    พอจะมีแนวทางแก้ปัญหาการเขียนโปรแกรมแบบนี้ไหมครับ?
    ขอบคุณครับ

  2. #2
    เอก
    Guest
    งาน Data Convert แบบนี้ ผมเจอบ่อย เวลาไปทำ Consult ออกแบบระบบรายงานให้กับบริษัทลูกค้า ซึ่งพอทำออกมาแล้ว มันน่าทึ่งมาก เพราะเดิมลูกค้าต้องเอาข้อมูลที่พิมพ์ออกกระดาษ มาพิมพ์ใหม่ใน Excel แล้วค่อยไปประมวลผล เสียเวลานานมาก บางงานใช้เวลาหลายวันกว่าจะเสร็จ แต่ถ้ามี Text file ที่ Export มาจากโปรแกรมอื่นได้ ผมก็จะสร้างไฟล์ Convert ขึ้นมา เขียนสูตรรอเอาไว้ ผู้ใช้แค่เอาข้อมูลจากไฟล์นั้นๆ มาวางลงในคอลัมน์ที่กำหนด เท่านั้นเอง

    จากไฟล์ตัวอย่างที่แนบมา ผมกำหนดให้นำเอาข้อมูลจาก Text file วางลงในคอลัมน์ A ของชีท Convert เท่านั้นครับ เท่านั้นจริงๆ แล้วก็คัดลอกข้อมูลที่ Covert แล้ว ไปใช้ เช่น เอาไปบันทึกต่อๆ กันลงในฐานข้อมูลของเดือนก่อนๆ

    ใน Text file มี Char#160 เป็นช่องว่าง (ไม่ใช่ Space bar) ก็เลยต้องมีการปรับข้อมูล ด้วยสูตรที่มีขั้นตอนมากสักหน่อยครับ

    ลองดูตัวอย่างในไฟล์แนบครับ

  3. #3
    gaka
    Guest
    ขอบคุณครับอาจารย์เอก ได้แนวทาง
    ผมก็หน้ามืดมองเห็นแต่ Programming อย่างเดียว ต้องถอยออกมาก้าวนึงจึงจะเห็นทางสว่าง

  4. #4
    vajra
    Guest
    เรื่อง Regex บอกตรงๆว่าไม่เข้าใจเลยครับ...:rofl:
    ตอนแรกก็คิดจะดัก Chr 160 เหมือนครูเอก แต่เปลี่ยนใจเนื่องจาก 1ชุดข้อมูลมี chr 160 หลายตัว
    เลยเปลี่ยนไปดักจับ "รวม " แทน
    Code:
    Public Sub DataTrapping()
    Dim txt
    For Each i In Range("a1:a" & [a1].End(xlDown).Row)
    If Left(i.Value, 4) = "รวม " Then
    txt = Split(i.Value, " ")
    n = 2 * Val(txt(1))
     MsgBox i.Offset(-1 * (n + 5), 0).Value
     MsgBox i.Offset(-1 * (n + 4), 0).Value
     MsgBox i.Offset(-1 * (n + 3), 0).Value
     MsgBox i.Offset(-1 * (n + 0), 0).Row
    End If
    Next
    End Sub
    งานที่เหลือก็กำหนด Sourceจากค่าที่ได้จาก Code แล้วส่งไปปลายทาง

  5. #5
    gaka
    Guest
    ขอบคุณครับคุณvajra ที่แนะนำ

Similar Threads

  1. ต้องการดึงข้อมูลจาก Text file
    By tk_sport in forum Excel Expert Forum Library 2017 - 2012
    Replies: 4
    Last Post: 5 Aug 2013, 09:03
  2. Generate each sheet to text file
    By davidmay_t in forum Excel Expert Forum Library 2012 - 2007
    Replies: 5
    Last Post: 22 Sep 2011, 12:16
  3. regex in vba
    By chonpeak in forum Excel Expert Forum Library 2012 - 2007
    Replies: 10
    Last Post: 16 Apr 2011, 10:26
  4. Replies: 2
    Last Post: 2 Sep 2009, 01:01
  5. VBA กับ Text File
    By espresso.zZ in forum Excel Expert Forum Library 2012 - 2007
    Replies: 2
    Last Post: 17 Jun 2009, 16:49

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •