สารบัญ
เมื่อใดก็ตามที่คุณต้องการ คุณสามารถคัดลอกช่วงจากชีตหนึ่งไปยังชีตหรือสมุดงานอื่น การคัดลอกและการวางมีหลายประเภท หลังจากบทความนี้ คุณจะได้เรียนรู้วิธีต่างๆ ในการใช้ช่วงการคัดลอก Excel VBA ไปยังชีตอื่น
เพื่อให้คำอธิบายมีชีวิตชีวา ฉันจะใช้ชุดข้อมูลตัวอย่างที่แสดงข้อมูลส่วนบุคคลของบุคคลใดบุคคลหนึ่ง . ชุดข้อมูลมี 4 คอลัมน์ คอลัมน์เหล่านี้คือ ชื่อ นามสกุล ชื่อเต็ม และ อีเมล
ดาวน์โหลดสมุดงานเพื่อฝึกฝน
ช่วงการคัดลอก VBA ไปยัง Sheet.xlsm อื่น
8 วิธีในการคัดลอกช่วง VBA ของ Excel ไปยังแผ่นงานอื่น
1. คัดลอกช่วง ไปยังแผ่นงานอื่นที่มีรูปแบบ
เมื่อใดก็ตามที่คุณต้องการ คัดลอก ช่วงจากแผ่นงานหนึ่งไปยังอีกแผ่นหนึ่งที่มีรูปแบบ รูปแบบ คุณสามารถทำได้โดยใช้ปุ่ม VBA .
ที่นี่ ฉันจะ คัดลอก ช่วงจาก ชุดข้อมูล แผ่นงาน ไปยัง WithFormat แผ่นงาน
มาเริ่มขั้นตอนกัน
ก่อนอื่น เปิดแท็บ นักพัฒนาซอฟต์แวร์ >> เลือก Visual Basic
คุณยังสามารถใช้แป้นพิมพ์ ALT + F11 เพื่อเปิด VBA ตัวแก้ไข
ถัดไป จะเปิดหน้าต่างใหม่ที่ชื่อว่า Microsoft Visual Basic for Applications
จากนั้น เปิด แทรก >> เลือก โมดูล .
A โมดูล จะเปิดขึ้น จากนั้นพิมพ์รหัสต่อไปนี้ในช่องเปิด >> เลือก ดูมาโคร
➤ กล่องโต้ตอบ จะปรากฏขึ้น
ตอนนี้ จาก ชื่อมาโคร เลือก Copy_Range_BelowLastCell_AnotherSheets และเลือกสมุดงานภายใน มาโครใน
สุดท้าย เรียกใช้ เลือก มาโคร .
ดังนั้น มันจะ คัดลอก ช่วงที่เลือก และจะ วาง จากแถวสุดท้ายของแผ่นงานอื่น .
8. VBA คัดลอกช่วงไปยังแถวสุดท้ายของสมุดงานอื่น
ถ้าคุณต้องการ คัดลอก ช่วงไปยังแถวสุดท้ายของแผ่นงานสมุดงานอื่น คุณสามารถใช้ VBA ได้เช่นกัน
ที่นี่ ฉันจะ คัดลอก ช่วงจาก Dataset2 แผ่นงานไปยัง แผ่นที่ 1 ของ เล่ม 2 แต่จากเซลล์ที่ไม่ว่างเซลล์แรก
ในการเริ่มขั้นตอน
ขั้นแรก เปิดแท็บ นักพัฒนา >> เลือก Visual Basic
คุณยังสามารถใช้แป้นพิมพ์ ALT + F11 เพื่อเปิดโปรแกรมแก้ไข VBA <1
ถัดไป จะเปิดหน้าต่างใหม่ของ Microsoft Visual Basic for Applications
จากนั้น เปิด แทรก >> เลือก โมดูล .
A โมดูล จะเปิดขึ้น จากนั้นพิมพ์รหัสต่อไปนี้ใน โมดูล ที่เปิดอยู่
2687
ที่นี่ ฉันได้ประกาศ ขั้นตอนย่อย Copy_Range_BelowLastCell_To_Another_Workbook โดยที่ wsCopy และ wsDestination คือ แผ่นงาน ประเภท lCopyLastRow และ lDestLastRow เป็น ประเภท แบบยาว
ก่อนอื่น ใช้ ตั้งค่า เพื่อตั้งค่าตัวแปรสำหรับแผ่นงานที่จะคัดลอกและแผ่นงานปลายทาง
ถัดไป ใช้วิธี แถว เพื่อค้นหาแถวสุดท้ายตามข้อมูลของคอลัมน์ A ในช่วงการคัดลอก
อีกครั้ง ใช้วิธี แถว ในการค้นหาแถวว่างแถวแรกตามข้อมูลของคอลัมน์ A ในช่วงปลายทาง ยังใช้ ออฟเซ็ต เพื่อย้ายคุณสมบัติหนึ่งรายการลง
สุดท้าย คัดลอก ข้อมูลของ Dataset2 แผ่นงานจาก Excel VBA Copy Range ไปยังสมุดงานอีก Sheet.xlsm ไปยังปลายทาง Sheet1 ของสมุดงาน Book2.xlsx .
ตอนนี้ บันทึก รหัสและกลับไปที่แผ่นงาน
ถัดไป เปิดแท็บ ดู >> จาก มาโคร >> เลือก ดูมาโคร
➤ กล่องโต้ตอบ จะปรากฏขึ้น
ตอนนี้ จาก ชื่อมาโคร เลือก Copy_Range_BelowLastCell_To_Another_Workbook และเลือกสมุดงานภายใน มาโครใน ด้วย
สุดท้าย เรียกใช้ เลือก มาโคร .
ดังนั้น มันจะ คัดลอก ช่วงที่เลือกจากแผ่นงานที่มีอยู่ไปยังแถวสุดท้ายของสมุดงานอื่น
ส่วนการปฏิบัติ
ฉันได้ให้แบบฝึกหัดในสมุดงานเพื่อฝึกฝนวิธีการที่อธิบายเหล่านี้ของ Excel VBA ช่วงการคัดลอก ไปยังชีตอื่น
สรุป
ในบทความนี้ ฉันได้อธิบายวิธีที่ง่ายและรวดเร็ว 8 ประเภทที่แตกต่างกันช่วงการคัดลอก Excel VBA ไปยังแผ่นงานอื่น วิธีต่างๆ เหล่านี้จะช่วยให้คุณคัดลอกช่วงจากแผ่นงานหนึ่งไปยังอีกแผ่นหนึ่ง และจากแผ่นงานหนึ่งไปยังสมุดงานอีกแผ่นหนึ่งด้วย สุดท้ายแต่ไม่ท้ายสุด หากคุณมีข้อเสนอแนะ แนวคิด และคำติชมใดๆ โปรดอย่าลังเลที่จะแสดงความคิดเห็นด้านล่าง
โมดูล .6584
ที่นี่ ฉันได้ประกาศ ขั้นตอนย่อย Copy_Range_withFormat_ToAnother_Sheet
ฉันใช้ช่วง B1:E10 เพื่อคัดลอกจากแผ่นงานที่มีอยู่ไปยังชื่อแผ่นงาน WithFormat
ที่นี่ ฉันใช้ คัดลอก วิธีการคัดลอกช่วงที่เลือก คัดลอก วิธีการคัดลอกช่วงใด ๆ ด้วย รูปแบบ
สุดท้าย บันทึก รหัสและกลับไปที่แผ่นงาน .
ถัดไป เปิดแท็บ ดู >> จาก มาโคร >> เลือก ดูมาโคร
➤ กล่องโต้ตอบ จะปรากฏขึ้น
ตอนนี้ จาก ชื่อมาโคร เลือก Copy_Range_withFormat_ToAnother_Sheet เลือกสมุดงานภายใน มาโครใน ด้วย
สุดท้าย เรียกใช้ เลือก มาโคร .
ดังนั้น มันจะ คัดลอก ช่วงที่เลือกด้วย รูปแบบ ไปยังแผ่นงานใหม่ที่ฉันเลือก ( WithFormat) .
2. VBA คัดลอกช่วงไปยังชีตอื่นโดยไม่มีรูปแบบ
นอกจากนี้ยังเป็น เป็นไปได้ที่จะ คัดลอก ช่วงไปยังแผ่นงานอื่นโดยไม่ต้อง รูปแบบ โดยใช้ VBA
ที่นี่ ฉันจะ คัดลอก ช่วงจาก ชุดข้อมูล ชีตถึง ไม่มีรูปแบบ ชีต
มาเริ่มขั้นตอนกันเลย
ตอนนี้ เปิด นักพัฒนาซอฟต์แวร์ แท็บ >> เลือก Visual Basic ( ใช้ ALT + F11)
ถัดไป จะเปิด Microsoft Visual Basic for Applications
จากนั้น เปิด แทรก >> เลือก โมดูล .
A โมดูล จะเปิดขึ้น จากนั้นพิมพ์รหัสต่อไปนี้ใน โมดูล ที่เปิดอยู่
5187
ที่นี่ ฉันประกาศ ขั้นตอนย่อย Copy_Range_WithoutFormat_Toanother_Sheet
ฉันใช้ช่วง B1:E10 เพื่อคัดลอกจากแผ่นงานที่มีอยู่ไปยังชื่อแผ่นงาน ไม่มีรูปแบบ .
ที่นี่ ฉันใช้วิธี คัดลอก เพื่อคัดลอกช่วงที่เลือก แต่ยัง กล่าวถึง Paste:=xlPasteValues ในเมธอด PasteSpecial เพื่อให้วางเฉพาะ ค่า ของช่วงที่เลือก ไม่ใช่รูปแบบ
สุดท้าย , บันทึก โค้ด และกลับไปที่แผ่นงาน
ถัดไป เปิดแท็บ ดู >> จาก มาโคร >> เลือก ดูมาโคร
➤ กล่องโต้ตอบ จะปรากฏขึ้น
ตอนนี้ จาก ชื่อมาโคร เลือก Copy_Range_WithoutFormat_Toanother_Sheet และเลือกสมุดงานภายใน มาโครใน
สุดท้าย เรียกใช้ เลือก มาโคร
ดังนั้น มันจะ คัดลอก ช่วงที่เลือกเฉพาะกับ ค่า ไม่ใช่ รูปแบบ .
3. คัดลอกช่วงไปยังชีตอื่นที่มีรูปแบบและความกว้างของคอลัมน์
บางครั้งคุณอาจต้องการ คัดลอก ช่วงใดๆ ที่เลือกตามที่เป็นอยู่ เพื่อให้คุณสามารถ คัดลอก ช่วงที่มี รูปแบบ และ ความกว้างคอลัมน์ ได้
ที่นี่ ฉันจะ คัดลอก ช่วงจาก ชุดข้อมูล แผ่นงานไปยัง รูปแบบ & ความกว้างของคอลัมน์ แผ่นงาน
หากต้องการดูขั้นตอนในการทำงานโดยใช้ VBA ,
ก่อนอื่น ให้เปิดแท็บ นักพัฒนาซอฟต์แวร์ >> เลือก Visual Basic
คุณยังสามารถใช้แป้นพิมพ์ ALT + F11 เพื่อเปิดโปรแกรมแก้ไข VBA <1
ถัดไป จะเปิดหน้าต่างใหม่ของ Microsoft Visual Basic for Applications
จากนั้น เปิด แทรก >> เลือก โมดูล .
A โมดูล จะเปิดขึ้น จากนั้นพิมพ์รหัสต่อไปนี้ใน โมดูล ที่เปิดอยู่
9570
ที่นี่ ฉันประกาศ ขั้นตอนย่อย Copy_Range_to_Another_Sheet_with_FormatAndColumnWidth
ฉันใช้ช่วง B1:E10 เพื่อคัดลอกจากแผ่นงานที่มีอยู่ไปยังชื่อแผ่นงานปลายทาง รูปแบบ & ความกว้างของคอลัมน์ .
ที่นี่ ฉันใช้วิธี คัดลอก เพื่อคัดลอกช่วงที่เลือก ฉันยังใช้วิธี PasteSpecial ซึ่งฉันได้กล่าวถึง Paste:=xlPasteColumnWidths เพื่อที่จะวางช่วงที่เลือกพร้อมกับ รูปแบบ และ ความกว้างของคอลัมน์ .
สุดท้าย บันทึก รหัสและกลับไปที่แผ่นงาน
ถัดไป เปิดแท็บ ดู >> จาก มาโคร >> เลือก ดูมาโคร
➤ กล่องโต้ตอบ จะปรากฏขึ้น
ตอนนี้ จาก ชื่อมาโคร เลือก Copy_Range_to_Another_Sheet_with_FormatAndColumnWidth และเลือกสมุดงานภายใน มาโครใน
สุดท้าย เรียกใช้ รายการที่เลือก มาโคร .
ด้วยเหตุนี้ มันจะ คัดลอก ช่วงที่เลือกด้วย รูปแบบ และ ความกว้างของคอลัมน์ .<1
4. VBA คัดลอกช่วงไปยังแผ่นงานอื่นที่มีสูตร
ในกรณีที่คุณมีสูตรในชุดข้อมูลที่คุณต้องการคัดลอก ไม่ต้องห่วง! คุณสามารถคัดลอกช่วงที่มี สูตร ไปยังชีตอื่นโดยคงสูตรไว้เหมือนเดิม
ที่นี่ ฉันจะ คัดลอก ช่วงจาก ชุดข้อมูล ชีต ไปที่ ด้วยสูตร แผ่นงาน
มาเริ่มขั้นตอนกันเลย
เริ่มต้นด้วยการเปิดแท็บ นักพัฒนาซอฟต์แวร์ >> เลือก Visual Basic ( คุณยังสามารถใช้แป้นพิมพ์ ALT + F11 ได้อีกด้วย)
ถัดไป จะเปิด Microsoft Visual Basic for Applications
จากนั้น เปิด แทรก >> เลือก โมดูล .
A โมดูล จะเปิดขึ้น จากนั้นพิมพ์รหัสต่อไปนี้ใน โมดูล ที่เปิดอยู่
7803
ที่นี่ ฉันประกาศ ขั้นตอนย่อย Copy_Range_withFormula_ToAnother_Sheet
ฉันใช้ช่วง B1:E10 เพื่อคัดลอกจากแผ่นงานที่มีอยู่ไปยังชื่อแผ่นงานปลายทาง ด้วยสูตร .
ที่นี่ ฉันใช้วิธี คัดลอก เพื่อคัดลอกช่วงที่เลือก ฉันยังใช้เมธอด PasteSpecial ซึ่งฉันได้กล่าวถึง Paste:=xlPasteFormulas เพื่อให้มี Formulas พร้อมกับช่วงที่เลือก
ในที่สุด , บันทึก โค้ด และกลับไปที่แผ่นงาน
จากนั้น เปิด มุมมอง แท็บ >> จาก มาโคร >> เลือก ดูมาโคร
➤ กล่องโต้ตอบ จะปรากฏขึ้น
ตอนนี้ จาก ชื่อมาโคร เลือก Copy_Range_withFormula_ToAnother_Sheet เลือกสมุดงานภายใน มาโครใน ด้วย
สุดท้าย เรียกใช้ เลือก แมโคร .
ดังนั้น มันจะ คัดลอก ช่วงเซลล์ที่เลือกทั้งหมดด้วย สูตร .
การอ่านที่คล้ายกัน:
- วิธีใช้ VBA Range Offset (11 วิธี)
- VBA สำหรับแต่ละเซลล์ในช่วงใน Excel (3 วิธี)
- วิธีใช้วัตถุช่วงของ VBA ใน Excel (5 คุณสมบัติ)
5. คัดลอกช่วงด้วยการปรับพอดีอัตโนมัติไปยังแผ่นงานอื่น
ในขณะที่ คัดลอก ช่วงหนึ่งไปยังแผ่นงานอื่น คุณสามารถใช้เมธอด ปรับพอดีอัตโนมัติ ใน VBA ถึง ปรับพอดีอัตโนมัติ ช่วงที่คัดลอกในแผ่นงานใหม่
ที่นี่ ฉันจะ คัดลอก ช่วงจาก ชุดข้อมูล แผ่นงานไปยัง ปรับพอดีอัตโนมัติ แผ่นงาน
มาเริ่มขั้นตอนกัน
ก่อนอื่น เปิดแท็บ นักพัฒนาซอฟต์แวร์ >> เลือก Visual Basic
คุณยังสามารถใช้แป้นพิมพ์ ALT + F11 เพื่อเปิดโปรแกรมแก้ไข VBA <1
ถัดไป จะเปิดหน้าต่าง Microsoft Visual Basic for Applications
จากนั้น เปิด แทรก > ;> เลือก โมดูล .
A โมดูล จะเปิดขึ้น จากนั้นพิมพ์รหัสต่อไปนี้ในช่องเปิด โมดูล .
6398
ที่นี่ ฉันประกาศ ขั้นตอนย่อย Copy_Range_withFormat_AutoFit
ก่อนอื่น ฉันเลือกแผ่นงาน ชุดข้อมูล จากนั้นนำช่วง B1:E10 เพื่อคัดลอกจากแผ่นงานที่มีอยู่ไปยังแผ่นงานปลายทางชื่อ ปรับพอดีอัตโนมัติ .
ที่นี่ ฉันใช้ คัดลอก วิธีคัดลอกช่วงที่เลือกและวิธี ปรับพอดีอัตโนมัติ จะปรับคอลัมน์ให้พอดีอัตโนมัติ B:E .
สุดท้าย บันทึก รหัสและไป กลับไปที่แผ่นงาน
ถัดไป เปิดแท็บ ดู >> จาก มาโคร >> เลือก ดูมาโคร
➤ กล่องโต้ตอบ จะปรากฏขึ้น
ตอนนี้ จาก ชื่อแมโคร เลือก Copy_Range_withFormat_AutoFit เลือกสมุดงานภายใน มาโครใน ด้วย
สุดท้าย เรียกใช้ มาโคร ที่เลือก
ดังนั้น มันจะ คัดลอก ช่วงที่เลือกไปยังแผ่นงานใหม่ และ ปรับพอดีอัตโนมัติ คอลัมน์ต่างๆ ด้วย
6. VBA คัดลอกช่วงไปยังสมุดงานอื่น
ถ้าคุณต้องการ คุณยังสามารถ คัดลอก ช่วงจากแผ่นงานหนึ่งไปยังอีกแผ่นหนึ่ง ของสมุดงานอื่น
ที่นี่ ฉันจะ คัดลอก ช่วงจาก ชุดข้อมูล แผ่นงาน ไปยัง แผ่นที่ 1 ของ เล่ม 1 สมุดงาน
มาเริ่มขั้นตอนกัน
ก่อนอื่น เปิดแท็บ นักพัฒนาซอฟต์แวร์ >> เลือก Visual Basic (y คุณสามารถใช้แป้นพิมพ์ ALT + F11 ได้ด้วย)
จากนั้น มันจะเปิด Microsoft Visualพื้นฐานสำหรับแอปพลิเคชัน
ถัดไป เปิด แทรก >> เลือก โมดูล .
A โมดูล จะเปิดขึ้น จากนั้นพิมพ์รหัสต่อไปนี้ใน โมดูล ที่เปิดอยู่
7510
ที่นี่ ฉันประกาศ ขั้นตอนย่อย Copy_Range_WithFormat_Toanother_WorkBook
ฉันใช้ช่วง B3:E10 จากชื่อแผ่นงาน ชุดข้อมูล เพื่อคัดลอกจากแผ่นงานที่มีอยู่ไปยังชื่อสมุดงานใหม่ Book1 และชื่อแผ่นงาน แผ่นงาน 1 .
ที่นี่ ฉันใช้วิธี คัดลอก เพื่อคัดลอกช่วงที่เลือกไปยังสมุดงานใหม่
สุดท้าย บันทึก รหัสและกลับไปที่แผ่นงาน
ถัดไป เปิดแท็บ ดู >> จาก มาโคร >> เลือก ดูมาโคร
➤ กล่องโต้ตอบ จะปรากฏขึ้น
ตอนนี้ จาก ชื่อมาโคร เลือก Copy_Range_WithFormat_Toanother_WorkBook และเลือกสมุดงานภายใน มาโครใน ด้วย
สุดท้าย เรียกใช้ เลือก มาโคร .
ตอนนี้ มันจะ คัดลอก ช่วงที่เลือกจากแผ่นงาน ชุดข้อมูล ไปยังสมุดงานอื่น
7. คัดลอกช่วงไปยังแถวสุดท้ายของชีตอื่น
ไม่ว่าในกรณีใด ถ้าคุณต้องการ คัดลอก ช่วงไปยังชีตอื่น จากเซลล์ใดเซลล์หนึ่งหรือเซลล์สุดท้าย คุณสามารถทำได้โดยใช้ VBA .
ก่อนเข้าสู่กระบวนการ ฉันต้องการบอกคุณว่า ฉันได้นำแผ่นงานใหม่ 2 แผ่นซึ่งประกอบด้วย ชื่อเต็ม อีเมล และ ที่อยู่ .
เรามาสังเกตแผ่นงาน Dataset2 ก่อน
นี่คือแผ่นงาน ด้านล่างเซลล์สุดท้าย
ที่นี่ ฉันจะ คัดลอก ช่วงจาก ชุดข้อมูล 2 แผ่นงานไปยัง ด้านล่างเซลล์สุดท้าย แต่จากเซลล์แรกที่ไม่ว่าง
ในการเริ่มต้น ให้เปิดแท็บ นักพัฒนาซอฟต์แวร์ >> เลือก Visual Basic
ถัดไป จะเปิด Microsoft Visual Basic for Applications
จากนั้น เปิด แทรก >> เลือก โมดูล .
A โมดูล จะเปิดขึ้น จากนั้นพิมพ์รหัสต่อไปนี้ใน โมดูล ที่เปิดอยู่
2727
ที่นี่ ฉันประกาศ ขั้นตอนย่อย Copy_Range_BelowLastCell_AnotherSheets
ก่อนอื่น ฉันเลือกแผ่นงาน Dataset2 แล้วใช้ แถว เมธอดเพื่อนับ แถวสุดท้าย และเก็บแถวที่นับไว้ใน lr .
จากนั้นถ่าย ช่วง A2:C & lr เพื่อคัดลอกจากชีตที่มีอยู่ไปยังชื่อชีตปลายทาง ด้านล่างเซลล์สุดท้าย .
อีกครั้ง ใช้เมธอด แถว เพื่อนับ สุดท้าย แถว ของชีตอื่นชื่อ ด้านล่างเซลล์สุดท้าย และเก็บแถวที่นับแล้วไว้ใน lrAnotherSheet .
ในที่นี้ ผมใช้เมธอด คัดลอก เพื่อคัดลอกช่วงที่เลือกและเมธอด ปรับพอดีอัตโนมัติ จะปรับคอลัมน์ให้พอดี A:C โดยอัตโนมัติ
สุดท้าย บันทึก รหัสแล้วย้อนกลับ ไปยังแผ่นงาน
ถัดไป เปิดแท็บ ดู >> จาก มาโคร