Page 1 of 1

รบกวนสอบถาม การ Copy หลาย Range จากหลาย Sheet ครับ

Posted: Tue Sep 08, 2015 5:46 pm
by PPtip
เนื่องจาก ผมต้องทำการ Copy ข้อมูล จากหลาย Range ในหนึ่ง Sheet และเป็นการ Copy จากหลาย Sheet ในไฟล์ เดียวกัน

ผมขออธิบายเป็น Code อย่างง่ายที่ผมเขียนน่ะครับ

Code: Select all

Sub IT()

Dim x As Workbook
Dim y As Workbook

Application.ScreenUpdating = False
Application.DisplayAlerts = False

'IT
Set x = Workbooks.Open("L:\g\Budget\Budget 2016 V.1- IT.xlsm")
Set y = Workbooks("Budget 2016 V.1- MASTER.xlsm")

'Sheet1
x.Sheets("1.CB-BKE").Range("N14:Y14").Copy
y.Sheets("1.CB-BKE").Range("N14:Y14").PasteSpecial

x.Sheets("1.CB-BKE").Range("N17:Y17").Copy
y.Sheets("1.CB-BKE").Range("N17:Y17").PasteSpecial

x.Sheets("1.CB-BKE").Range("N20:Y20").Copy
y.Sheets("1.CB-BKE").Range("N20:Y20").PasteSpecial

'Sheet2
x.Sheets("3.CB-BSN").Range("N14:Y14").Copy
y.Sheets("3.CB-BSN").Range("N14:Y14").PasteSpecial

x.Sheets("3.CB-BSN").Range("N17:Y17").Copy
y.Sheets("3.CB-BSN").Range("N17:Y17").PasteSpecial

x.Sheets("3.CB-BSN").Range("N20:Y20").Copy
y.Sheets("3.CB-BSN").Range("N20:Y20").PasteSpecial

x.Close

Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

ไม่ทราบว่าผมสามารถใช้สูตรไหนได้บ้างครับ เพราะ
1.เอกสาร Y จะต้อง copy ประมาณ 40 Sheet ครับ
2.Range ที่ต้อง Copy ต่อ 1 Sheet มีประมาณ 60 Range ครับ ทำให้ไม่สามารถรันได้ครั้งเดียว เนืองจากสูตรมีความยาวเกินไปครับ

ขอบคุณครับ

Re: รบกวนสอบถาม การ Copy หลาย Range จากหลาย Sheet ครับ

Posted: Tue Sep 08, 2015 7:34 pm
by bank9597
แนบไฟล์ตัวอย่างด้วยครับ พร้อมทำตัวอย่างคำตอบที่ต้องการมาดูด้วยครับ

Re: รบกวนสอบถาม การ Copy หลาย Range จากหลาย Sheet ครับ

Posted: Wed Sep 09, 2015 6:15 pm
by PPtip
bank9597 wrote:แนบไฟล์ตัวอย่างด้วยครับ พร้อมทำตัวอย่างคำตอบที่ต้องการมาดูด้วยครับ
ผมได้แนบไฟล์ตัวอย่างมาให้แล้วครับ ไฟล์ที่ต้องการจริง จะมีข้อมูลครบทุกช่องตามรหัส OP BD FA ตาม Sheet ย่อยที่ไม่ใช่ Sheet Consol ครับ

บ้างไฟล์ Range ที่ดึงมา ก็ไม่ได้เรียงติดกันครับ จะมีข้ามไปมาครับ ตัวเลขที่ผมใส่เป็นตัวแรกสมมุติ ความจริงจะไม่เท่ากันครับ

ถ้าผมอธิบายไม่เข้าใจยังไง รบกวนชี้แนะด้วยครับ

ขอบคุณสำหรับความช่วยเหลือครับ

Re: รบกวนสอบถาม การ Copy หลาย Range จากหลาย Sheet ครับ

Posted: Wed Sep 09, 2015 7:16 pm
by snasui
:D หากทำด้วยมือโดยไม่พึ่งโปรแกรม มีหลักการในเอาค่าจากต้นทางไปวางปลายทางอย่างไร ให้เขียนมาอย่างละเอียดครับ

การอธิบาย ให้เขียนบรรยาย จะได้ทราบว่าต้องการจะทำอะไร มีเงื่อนไขใด คำตอบที่ต้องการเป็นอย่างไร สามารถทำเป็นภาพ ใส่สี ตีเส้น ทำลูกศรโยงไปโยงมาตามสะดวก จะได้เข้าใจตรงกันครับ

Re: รบกวนสอบถาม การ Copy หลาย Range จากหลาย Sheet ครับ

Posted: Fri Oct 02, 2015 2:49 pm
by PPtip
ต้องขอโทษที่หายไปนานครับ

จากโค้ดที่ผมเขียน

Code: Select all

'Sheet1
x.Sheets("1.CB-BKE").Range("N14:Y14").Copy
y.Sheets("1.CB-BKE").Range("N14:Y14").PasteSpecial
อธิบาย คือ ให้ทำการ Copy Sheet "1.CB-BKE" ที่ "Range14" จากไฟล์ X ที่เป็นไฟล์ต้นทาง --> และ Paste ลงในไฟล์ Y ที่ Sheet "1.CB-BKE" ที่ "Range14" ที่เป็นไฟล์ปลายทางครับ

ซึ่งผมต้อง Copy หลาย Range ใน 1 Sheet และมีทั้งหมดประมาณ 50 Sheet ทำให้ Excel ขึ้น Error : procedure too large ครับ อยากสอบถามว่ามีวิธีไหนที่ทำให้สูตรสั้นลงได้บ้าง หรือว่าต้อง split สูตรออกมาเป็น 2 ชุดครับ

ตำแหน่งการ Copy ของแต่ละ Sheet จะอยู่ใน Range เดียวกัน

Code: Select all

'Sheet1
x.Sheets("1.CB-BKE").Range("N14:Y14").Copy
y.Sheets("1.CB-BKE").Range("N14:Y14").PasteSpecial

x.Sheets("1.CB-BKE").Range("N17:Y17").Copy
y.Sheets("1.CB-BKE").Range("N17:Y17").PasteSpecial

'Sheet2
x.Sheets("2.CB-BSN").Range("N14:Y14").Copy
y.Sheets("2.CB-BSN").Range("N14:Y14").PasteSpecial

x.Sheets("2.CB-BSN").Range("N17:Y17").Copy
y.Sheets("2.CB-BSN").Range("N17:Y17").PasteSpecial
ขอบคุณสำหรับทุกๆคำแนะนำครับ :thup:

Re: รบกวนสอบถาม การ Copy หลาย Range จากหลาย Sheet ครับ

Posted: Fri Oct 02, 2015 7:07 pm
by snasui
:D ตัวอย่างการ Loop ตามลักษณะงานที่ถามมาครับ

Code: Select all

Sub test()
   'Other variable declaration
    Dim i As Integer
    For i = 1 To x.Sheets.Count
        x.Sheets(i).Range("N14:Y14").Copy
        y.Sheets(i).Range("N14:Y14").PasteSpecial
        x.Sheets(i).Range("N17:Y17").Copy
        y.Sheets(i).Range("N17:Y17").PasteSpecial
    Next i
End Sub