สารบัญ
อาร์เรย์คือตัวแปรที่เก็บข้อมูลประเภทเดียวกัน ถ้ามีข้อมูลเพียงหนึ่งแถวหรือหนึ่งคอลัมน์ ก็จะเรียกว่าอาร์เรย์หนึ่งมิติ อย่างไรก็ตาม เมื่อมีแถวและคอลัมน์มากกว่าหนึ่งแถว จะเรียกว่าอาร์เรย์ 2 มิติ เราใช้ ReDim เพื่อปรับขนาดอาร์เรย์ใน VBA นอกจากนี้ เราใช้คีย์เวิร์ด รักษา ร่วมกับ ReDim เพื่อให้ข้อมูลเก่ายังคงอยู่ บทความนี้จะแสดง 2 วิธีที่รวดเร็วในการ “ ReDim Preserve ” อาร์เรย์ 2 มิติ ใน Excel VBA .
ดาวน์โหลดคู่มือฝึกปฏิบัติ
มาโครเพื่อ ReDim รักษา 2D.xlsm
2 แนวทางที่มีประโยชน์ ReDim รักษาอาร์เรย์ 2 มิติใน Excel VBA
นี่คือชุดข้อมูลพื้นฐานที่สร้างจาก อาร์เรย์ 2 มิติ ที่มีสามแถวและสองคอลัมน์ ก่อนอื่นเราจะสร้างอาร์เรย์นี้ จากนั้นเราจะเพิ่มคอลัมน์อื่นในอาร์เรย์นี้ เราจะใช้ “ ReDim Preserve ” เพื่อดำเนินการดังกล่าว นอกจากนี้ เราจะสาธิตว่าจะเกิดอะไรขึ้นหากเราไม่ใช้สิ่งนี้
ตามค่าเริ่มต้น เราจะปรับขนาดได้เฉพาะมิติสุดท้ายของอาร์เรย์ (เช่น คอลัมน์หรือขอบเขตบน) เราจะย้ายอาร์เรย์ จากนั้นเปลี่ยนมิติสุดท้าย จากนั้นย้ายอีกครั้งเพื่อปรับขนาดทั้งสองมิติของ อาร์เรย์ 2 มิติ ใน Excel VBA
1 ReDim รักษาอาร์เรย์ 2D มิติสุดท้าย
ก่อนอื่นเราจะกำหนด อาร์เรย์ 2D เป็นไดนามิก จากนั้นใช้คำสั่ง ReDim เราจะสร้างอาร์เรย์ที่มีสามแถวและสองคอลัมน์ สุดท้าย เราจะใช้คำสั่ง ReDim อีกครั้งกับ รักษา คีย์เวิร์ด เพื่อ เพิ่มขอบเขตบนของอาร์เรย์สองมิติ
ขั้นตอน:
- เริ่มต้นด้วยการกด ALT+F11 เพื่อเปิดหน้าต่าง VBA Module หรือคุณสามารถทำได้จากแท็บ นักพัฒนาซอฟต์แวร์ → เลือก Visual Basic
- จากนั้น จาก แทรก แท็บ → เลือก โมดูล เราจะพิมพ์โค้ด VBA ที่นี่
- ถัดไป พิมพ์โค้ดต่อไปนี้ใน โมดูล window.
3403
การแบ่งโค้ด VBA
- ประการแรก เรากำลังเรียก ขั้นตอนย่อย “ Redim_Preserve_2D_Array_Row ”.
- จากนั้น เราจะประกาศตัวแปร Our_Array เป็นอาร์เรย์แบบไดนามิก
- ต่อไป เราจะกำหนดขนาดของอาร์เรย์ ขอบเขตล่างคือ 3 ขอบเขตบนคือ 2 และทั้งคู่เริ่มต้นจาก 1 .
- จากนั้น เรากำหนดค่าให้กับอาร์เรย์ .
- หลังจากนั้น เราป้อนค่าในช่วงเซลล์ C6:D8
- หลังจากนั้น เรา จะดำเนินการโค้ด
- ดังนั้น บันทึก โมดูล แล้วกด เรียกใช้ .
- ด้วยเหตุนี้ ค่าจะส่งกลับค่าไปยังช่วงเซลล์ที่กำหนดไว้ เราจะเห็นว่า “ Rachel ” อยู่ในแถว 1 และคอลัมน์ 1 ตำแหน่งซึ่งถูกกำหนดเป็น ( 1,1 ) ในโค้ด VBA
- ตอนนี้ เราจะปรับขนาดอาร์เรย์
- ดังนั้น เพิ่มสิ่งนี้ในโค้ดก่อนหน้า และลบ คำสั่ง Range.Value แรก ยิ่งไปกว่านั้น คุณสามารถดูโค้ดได้จากภาพรวมด้านล่าง
2338
- ที่นี่ เราได้เพิ่มขอบเขตบนจาก ( 1 ถึง 2 ) ถึง ( 1 ถึง 3 ) โดย 1 .
- จากนั้นเราได้เพิ่มค่าลงในอาร์เรย์
- ตอนนี้หากเรารันโค้ดนี้ เราจะพบว่าค่าก่อนหน้านี้ไม่ถูกรักษาไว้ มันจะคืนค่าว่างสำหรับค่าก่อนหน้า
- ตอนนี้ เราสามารถแก้ไขปัญหานี้ได้โดยเพิ่ม รักษาคำหลัก ลงใน คำสั่ง ReDim .
- สุดท้าย โค้ดเต็มของเราจะเป็นแบบนี้
3184
- ตอนนี้ ถ้าเรา รัน โค้ดนี้ ผลลัพธ์จะเป็นแบบนี้ ดังนั้น เราจะ “ ReDim Preserve ” มิติสุดท้ายของ อาร์เรย์ 2 มิติ ใน Excel VBA.. ตอนนี้ วิธีถัดไปจะแสดงวิธีการ “ ReDim รักษา ” และปรับขนาดทั้งสองมิติของอาร์เรย์
อ่านเพิ่มเติม: VBA เพื่อรับเอกลักษณ์ ค่าจากคอลัมน์เข้าสู่อาร์เรย์ใน Excel (3 เกณฑ์)
การอ่านที่คล้ายกัน
- วิธีตั้งชื่ออาร์เรย์ตารางใน Excel (ด้วย ขั้นตอนง่ายๆ)
- Excel VBA เพื่ออ่านไฟล์ CSV เป็นอาร์เรย์ (4 ตัวอย่างในอุดมคติ)
- วิธีแปลงช่วงเป็นอาร์เรย์ใน ExcelVBA (3 วิธี)
- Excel VBA: ลบรายการที่ซ้ำกันออกจากอาร์เรย์ (2 ตัวอย่าง)
2. ReDim รักษาอาร์เรย์ 2D ทั้งสองมิติใน Excel VBA
ในวิธีสุดท้ายนี้ เราจะแสดงขั้นตอนการปรับขนาดและ “ ReDim Preserve ” the 2D array ที่นี่ เราจะใช้ฟังก์ชัน VBA Transpose เพื่อปรับขนาดขอบเขตล่างของอาร์เรย์ หากเราพยายามปรับขนาดขอบเขตล่างของอาร์เรย์ในวิธีแรก เราจะเห็นข้อผิดพลาด “ ตัวห้อยอยู่นอกช่วง ” เพื่อไม่ให้เป็นการเสียเวลา เรามาดูกันว่าเราจะแก้ไขปัญหานี้และบรรลุเป้าหมายได้อย่างไร
ขั้นตอน:
- ประการแรก ตามที่แสดงในวิธีแรก ให้เปิดหน้าต่าง โมดูล ขึ้นมา
- ประการที่สอง เพิ่มบรรทัดโค้ดต่อไปนี้ลงใน โค้ดแรก
2623
- ยิ่งไปกว่านั้น โค้ดสำหรับเมธอดสุดท้ายมีลักษณะดังนี้
2471
การแบ่งโค้ด VBA
- ประการแรก เราเรียก ขั้นตอนย่อย “ ReDim_Preserve_2D_Array_Both_Dimensions ” .
- จากนั้น โค้ดที่เหลือไปจนถึงฟังก์ชัน VBA Transpose จะเหมือนกับในโค้ดแรก
- ที่นี่ เรา กำลังย้ายอาร์เรย์
- จากนั้น เราจะเพิ่มขอบเขตบนของอาร์เรย์
- หลังจากนั้น เราจะย้ายอาร์เรย์อีกครั้ง ดังนั้น ในที่สุดมันก็จะเปลี่ยนขอบเขตล่าง
- ต่อไป เราป้อนค่าสำหรับอาร์เรย์ที่ปรับขนาดในขณะที่รักษาข้อมูลเก่า
- สุดท้าย เราเขียนค่าลงในช่วงเซลล์ C6:E9 .
- หลังจาก ที่ ตามที่แสดงในวิธีแรก เรียกใช้ โค้ดนี้
- ดังนั้นเราจึงสามารถเห็นภาพได้ว่าโค้ดรักษา ไว้อย่างไร อาร์เรย์ 2 มิติ โดยใช้ฟังก์ชัน “ ReDim Preserve ” และฟังก์ชัน VBA Transpose
อ่านเพิ่มเติม: VBA to Transpose Array ใน Excel (3 วิธี)
สิ่งที่ควรจำ
- ReDim Preserve ไม่สามารถเปลี่ยนขอบล่างของอาร์เรย์ได้ ในการทำเช่นนั้น เราต้องใช้ฟังก์ชัน Transpose
- เราสามารถใช้ ReDim บนไดนามิกอาร์เรย์เท่านั้น
สรุป
เราได้แสดงวิธีง่ายๆ สองวิธีในการ “ ReDim Preserve ” a 2D อาร์เรย์ ใน Excel VBA หากคุณประสบปัญหาใด ๆ เกี่ยวกับวิธีการเหล่านี้หรือมีข้อเสนอแนะใด ๆ สำหรับฉัน โปรดอย่าลังเลที่จะแสดงความคิดเห็นด้านล่าง นอกจากนี้ คุณสามารถเยี่ยมชมเว็บไซต์ของเรา ExcelWIKI เพื่อดูบทความเกี่ยวกับ Excel เพิ่มเติม ขอบคุณที่อ่าน เก่งขึ้นเรื่อยๆ!