Page 1 of 1

ตัดลอกข้อมูลแบบวนซ้ำ

Posted: Thu Jan 18, 2018 10:50 am
by swiper
ขอความกรุณาด้วยครับ ผมก๊อบข้อมูลข้ามมาอีกชีทหนึ่งโดยใช้การบันทึกมาโคร แล้วต้องการก๊อบซ้ำๆหลายครั้ง
โดยนำข้อมูลในแต่ละเดือนมาเรียงใหม่ให้เป็นแถวยาวลงไปตามปีแต่ละปี ผมต้องการหลายๆปี
จึงก๊อบโค้ดที่ได้จากการบันทึกมาโคร มาแก้ตัวเลข แล้ววางต่อซ้ำๆ ประกฎว่ารันไม่ได้เนื่องจากโค้ดยาวเกิน
อยากได้โค้ดที่สั้นกว่านี้ ช่วยปรับให้ทีครับ

ผมยังไม่ค่อยเข้าใจ vba อยากให้ช่วยดูให้หน่อยครับ จะได้นำไปต่อยอดปรับใช้ต่อ
ขอบคุณครับ

Re: ตัดลอกข้อมูลแบบวนซ้ำ

Posted: Thu Jan 18, 2018 6:30 pm
by snasui
:D ตัวอย่าง Code ครับ

Code: Select all

Dim rAll As Range, dRng As Range
Dim i As Integer, j As Integer
Dim nsh As Worksheet, tRng As Range

Set nsh = Sheets.Add(before:=Sheets(Sheets.Count))
With Sheets("TESE1")
    Set dRng = .Range("a2:a32")
    With nsh
        For j = 0 To 2
            For i = 0 To 11
                Set rAll = Sheets("TESE1").Range("b2").Offset(j * 31, i).Resize(31)
                Set tRng = .Range("b2").Offset(i * 31, j)
                nsh.Range("a2").Offset(i * 31, 0).Resize(31).Value = dRng.Value
                tRng.Resize(31).Value = rAll.Value
            Next i
        Next j
    End With
End With

Re: ตัดลอกข้อมูลแบบวนซ้ำ

Posted: Thu Jan 18, 2018 10:00 pm
by swiper
snasui wrote: Thu Jan 18, 2018 6:30 pm :D ตัวอย่าง Code ครับ

Code: Select all

Dim rAll As Range, dRng As Range
Dim i As Integer, j As Integer
Dim nsh As Worksheet, tRng As Range

Set nsh = Sheets.Add(before:=Sheets(Sheets.Count))
With Sheets("TESE1")
    Set dRng = .Range("a2:a32")
    With nsh
        For j = 0 To 2
            For i = 0 To 11
                Set rAll = Sheets("TESE1").Range("b2").Offset(j * 31, i).Resize(31)
                Set tRng = .Range("b2").Offset(i * 31, j)
                nsh.Range("a2").Offset(i * 31, 0).Resize(31).Value = dRng.Value
                tRng.Resize(31).Value = rAll.Value
            Next i
        Next j
    End With
End With
ขอบคุณมากครับอาจารย์ :cp: