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
ตัวอย่าง 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
ตัวอย่าง 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
ขอบคุณมากครับอาจารย์