ขอความช่วยเหลือแก้ Code VBA บน excelไฟล์.csvหน่อยครับ พอดีอยากตัด3แถว และข้อมูลมี2000กว่าแถวอ่าครับTT

สวัสดีครับ พอดีผม ต้องการความช่วยเหลือเรื่อง code VBA อ่าครับ พอดีผมมีข้อมูลเยอะมากเลยครับในไฟล์ excel ของผม 1.ผมอยากให้มีการcopyหรือตัดแถวที่2-4แล้วบันทึก1ไฟล์(แถวที่1เป็นหัวตารางครับซึ่งจะต้องออกมาทุกไฟล์ที่ตัดครับ) ครับ และมีการตัด แถวที่5 แล้วบันทึกอีก1ไฟล์ครับ และทำการตัดแถวที่3-5แล้วบันทึกอีก1ไฟล์ แล้วทำการตัดแถวที่6แล้วทำการบันทึกอีก1ไฟล์ครับผม(เหมือนตัด3ตัด1ตัด3ตัด1ครับ) ครับผม ทำแบบนี้เป็นloopไปอ่าครับ เหมือนทำ moving averageอ่าครับ แต่แยกออกมาเป็นไฟล์ครับ ซึ่งตอนนี้ผมสามารถทำได้แค่ ตัดแถวที่2-4แล้วบันทึกและตัดแถวที่5แล้วบันทึกและทำการตัดแถวที่6-7ซึ่งไม่ใช่3แถวแล้วอ่าครับเป็นแค่2แถวโดยไม่นับแถวหัวตารางนะครับแล้วบันทึกและตัดแถวที่8แล้วบันทึกอ่าครับ ไม่สามารถย้อนกลับไปตัดแถวถัดลงมาได้อ่าครับ พอจะมีวิธีการแก้ไขcodeไหมครับผม
นี่เป็น. Code ครับ
Sub DivideFile()

        Dim record As String
        Dim countloop, maxcount, maxcount1, maxcount2 As Integer
        Dim head As String
        Dim checkHead, fileCount, fileCount1, fileCount2 As Integer
        
        
        checkHead = 1
        maxcount1 = 3
        maxcount2 = 1
        countloop = 0
        maxcount = maxcount1
        fileCount = 0
        fileCount1 = 0
        fileCount2 = 0

        Open "C:\Users\Acer\Desktop\Project\newsus\PM.csv" For Input As #1
        Open "C:\Users\Acer\Desktop\Project\newsus\PM_" + Str(maxcount) + "_" + Str(Int(fileCount)) + ".csv" For Output As #2
        
        Do Until EOF(1)
        
         If (countloop = 0) Then
                Line Input #1, head
         End If
        
         If (checkHead = 1) Then
                Print #2, head
                checkHead = 0
         End If
        
         Line Input #1, record
         Print #2, record
         countloop = countloop + 1

         If (countloop Mod maxcount = 0) Then
                                
                checkHead = 1
                fileCount = Switch(maxcount = maxcount1, fileCount1, maxcount = maxcount2, fileCount2)
                
                If (maxcount = maxcount1) Then
                 fileCount1 = fileCount1 + 1
                Else
                 fileCount2 = fileCount2 + 1
                End If
                
                maxcount = Switch(maxcount = maxcount1, maxcount2, maxcount = maxcount2, maxcount1)
                Close #2
                
                Open "C:\Users\Acer\Desktop\Project\newsus\PM_" + Str(maxcount) + "_" + Str(Int(fileCount)) + ".csv" For Output As #2
        
         End If
        
        Loop
        Close #1
        Close #2

End Sub
สรุปปัญหาคือ 1.หลังจากตัดแถวที่2-4แล้วบันทึกและตัดแถวที่5แล้วบันทึกและไม่สามารถย้อนกลับไปตัดแถวที่3-5 แล้วตัดแถวที่6 >>ตัดแถวที่4-6ได้แล้วตัดแถวที่7ได้อ่าครับ เหมือนทำการเฉลี่ยเคลื่อนที่คราวละ3อ่าครับ
2. ไม่สามารถตัดแถวอกกเป็น3แถวได้ครับแต่ที่ทำได้คือ (ตัด2-4ตัด5ตัด3-4ซึ่งมีแค่2แถวอ่าครับและตัด6)
พอจะมีวิธีแก้ไหมครับตอนนี้คือเครียดมากๆเลยครับ

ไฟล์.csv ใน excelครับ พอดีผมทำโปรเจคเกี่ยวกับ data mining ครับ และต้องการสร้างข้อมูล เพื่อ test model ครับผม ขอความช่วยเหลือหน่อยนะครับ
ถ้ามีภาษา อื่นๆ C# หรือ JAVA ก็แนะนำได้นะครับ
คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 3
เอาใหม่ ใช้คำสั่ง Line Input # ก็ได้

DIM arrayCut(3) as String
DIM cutV as String
...
    Open "C:\Users\Acer\Desktop\Project\newsus\PM.csv" For Input As #1

    
     Line Input #1, head
     Line Input #1, arrayCut(0)
     Line Input #1, arrayCut(1)
     Line Input #1, arrayCut(2)
     Line Input #1, cutV

     Do While Not EOF(1)
         ... ตรงนี้คุณใส่ maxcount , fileCount เพื่อกำหนดชื่อ file สำหรับ output เอาเองนะครับ
         Open "C:\Users\Acer\Desktop\Project\newsus\PM_" + Str(maxcount) + "_" + Str(Int(fileCount)) + ".csv" For Output As #2
         Print #2, head
         Print #2, arrayCut(0)
         Print #2, arrayCut(1)
         Print #2, arrayCut(2)
         Close #2
                
         ... ตรงนี้คุณใส่ maxcount , fileCount เพื่อกำหนดชื่อ file สำหรับ output เอาเองนะครับ
         Open "C:\Users\Acer\Desktop\Project\newsus\PM_" + Str(maxcount) + "_" + Str(Int(fileCount)) + ".csv" For Output As #2
         Print #2, head
         Print #2, cutV
         Close #2
         arrayCut(0)=arrayCut(1)
         arrayCut(1)=arrayCut(2)
         arrayCut(2)=cutV
         Line Input #1, cutV
        
     Loop
น่าจะได้นะครับ
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่