Mundarija
Masiv bir xil turdagi ma'lumotlarni saqlaydigan o'zgaruvchidir. Agar ma'lumotlarning faqat bitta satri yoki bitta ustuni bo'lsa, u bir o'lchovli massiv deb nomlanadi. Biroq, bir nechta satr va ustunlar mavjud bo'lsa, u 2D massiv deb ataladi. VBA-da massiv hajmini o'zgartirish uchun ReDim dan foydalanamiz. Bundan tashqari, biz eski ma'lumotlarni saqlab qolish uchun Preserve kalit so'zidan ReDim bilan foydalanamiz. Ushbu maqola sizga 2 Excel VBA
Amaliyot kitobini yuklab oling
Makro to ReDim Preserve 2D.xlsm
2 ta qulay yondashuv ReDim Preserve 2D massivini Excel VBA da
Bu uch satr va ikkita ustunli 2D massiv dan yaratilgan asosiy ma'lumotlar to'plami. Birinchidan, biz ushbu massivni yaratamiz. Keyin, biz ushbu massivga yana bir ustun qo'shamiz. Buning uchun biz “ ReDim Preserve ” dan foydalanamiz. Bundan tashqari, biz buni ishlatmasak nima bo'lishini ko'rsatamiz.
Sukut bo'yicha biz faqat massivning oxirgi o'lchamini (masalan, ustunlar yoki yuqori chegara) o'zgartirishimiz mumkin. Excel VBA da 2D massiv ning ikkala oʻlchamini oʻzgartirish uchun biz massivni oʻzgartiramiz, soʻng oxirgi oʻlchamni oʻzgartiramiz va keyin yana oʻzgartiramiz.
1 ReDim Oxirgi o'lchamli 2D massivini saqlab qo'ying
Biz avval 2D massivi ni dinamik deb belgilaymiz. Keyin ReDim operatoridan foydalanib, ni hosil qilamizuch qator va ikkita ustunli massiv. Nihoyat, ReDim iborasidan yana Preserve kalit so'zi uchun foydalanamiz. ikki o'lchovli massivning yuqori chegarasini oshiring.
Qadamlar:
- Boshlash uchun ALT+F11 tugmalarini bosing. VBA moduli oynasini ochish uchun . Shu bilan bir qatorda, buni Dasturchi yorlig‘idan qilishingiz mumkin → Visual Basic -ni tanlang.
- Keyin, Qo'yish yorlig'i → Module -ni tanlang. Bu yerda VBA kodini kiritamiz.
- Keyin, Module ga quyidagi kodni kiriting. oyna.
1605
VBA kodini ajratish
- Birinchidan, biz qo'ng'iroq qilamiz Sub protsedura “ Redim_Preserve_2D_Array_Row ”.
- Keyin biz Our_Array oʻzgaruvchisini dinamik massiv sifatida eʼlon qilamiz.
- Keyin, massiv hajmini aniqlaymiz. Pastki chegara 3 , yuqori chegarasi 2 va ikkalasi ham 1 dan boshlanadi.
- Keyin, massivga qiymatlar beramiz. .
- Bundan keyin biz qiymatlarni C6:D8 yacheyka diapazoniga kiritamiz.
- Bundan keyin biz kodni bajaradi.
- Shunday qilib, Saqlash Moduli va Ishga tushirish
- Natijada u qiymatlarni belgilangan hujayra diapazonlariga qaytaradi. Biz “ Rachel ” satr 1 va ustun 1 pozitsiyasida ekanligini ko'rishimiz mumkin,Bu VBA kodida ( 1,1 ) sifatida aniqlangan.
- Endi biz massiv hajmini o'zgartiramiz.
- Shunday qilib, buni oldingi kodga qo'shing va birinchi Range.Value bayonotini olib tashlang. Bundan tashqari, kod qanday koʻrinishini quyidagi suratda koʻrishingiz mumkin.
2852
- Bu erda biz ( dan yuqori chegarani oshirdik. 1 Kimga 2 ) ( 1 To 3 ) orqali 1 .
- Keyin, biz qiymatlarni massivga qo'shdik.
- Endi biz ushbu kodni bajarsak, oldingi qiymatlar saqlanmaganligini ko'ramiz. U oldingi qiymatlar uchun bo'sh joyni qaytaradi.
- Endi buni Preserve kalit so'zini qo'shish orqali tuzatamiz. 1>ReDim bayonoti .
- Nihoyat, bizning to'liq kodimiz bu bo'ladi.
5783
- Endi, agar biz Ishga tushirish bu kod, keyin chiqish shunday bo'ladi. Shunday qilib, biz Excel VBA-da 2D massiv ning oxirgi o'lchamini “ ReDim Preserve ” ga aylantiramiz. Endi keyingi usul sizga “ ReDimni qanday qilishni ko'rsatib beradi. Saqlang ” va massivning ikkala oʻlchamini oʻzgartiring.
Batafsil oʻqing: VBA noyob olish uchun Excelda ustundan massivga qiymatlar (3 mezon)
Shunga o'xshash o'qishlar
- Excelda jadval massivini qanday nomlash mumkin (bilan Oson qadamlar)
- CSV faylini massivga oʻqish uchun Excel VBA (4 ta ideal misol)
- Qanday qilib Excelda diapazonni massivga aylantirish mumkinVBA (3 yo'l)
- Excel VBA: Massivdan dublikatlarni olib tashlang (2 ta misol)
2. ReDim 2D massivning ikkala o'lchamini ham saqlab qo'ying Excel VBA
Ushbu yakuniy usulda biz sizga 2D massivi hajmini o'zgartirish va “ ReDim Preserve ” qadamlarini ko'rsatamiz. Bu erda biz massivning pastki chegarasini o'zgartirish uchun VBA Transpose funksiyasidan foydalanamiz. Agar biz birinchi usulda massivning pastki chegarasini o‘zgartirishga harakat qilsak, u holda “ Subscript out of diapazon ” xatosini ko‘ramiz. Keling, uzoq davom etmasdan, buni qanday tuzatish va maqsadimizga erishish mumkinligini ko'rib chiqaylik.
Qadamlar:
- Birinchidan, birinchi usulda ko'rsatilganidek , Module oynasini keltiring.
- Ikkinchidan, quyidagi kod qatorlarini qo'shing. birinchi kod.
2480
- Bundan tashqari, yakuniy usulning kodi shunday ko'rinadi.
5123
VBA kodini ajratish
- Birinchi navbatda, biz Sub protsedura “ ReDim_Preserve_2D_Array_Both_Dimensions ” deb nomlaymiz. .
- Keyin, VBA Transpose funksiyasiga qadar qolgan kodlar birinchi koddagi bilan bir xil.
- Bu erda biz massivni transpozitsiya qilmoqda.
- Keyin, biz massivning yuqori chegarasini oshiramiz.
- Shundan so'ng biz massivni yana ko'chiramiz. Shuning uchun u oxir-oqibat pastki chegarani o'zgartiradi.
- Keyin, biz o'lchami o'zgartirilgan massiv uchun qiymatlarni kiritamiz.eski ma'lumotlarni saqlab.
- Oxir-oqibat, qiymatlarni C6:E9 katakcha diapazoniga yozamiz.
- Keyin ya'ni birinchi usulda ko'rsatilganidek , Ishga tushirish ushbu kod.
- Shunday qilib, biz kod ni qanday saqlab qolishini tasavvur qilishimiz mumkin. 2D massivi “ ReDim Preserve ” va VBA Transpose funksiyasidan foydalangan holda.
Batafsil o'qing: Masivni Excelda ko'chirish uchun VBA (3 usul)
Esda tutilishi kerak bo'lgan narsalar
- ReDim Preserve massivning pastki chegarasini o'zgartira olmaydi. Buning uchun biz Transpose funksiyasidan foydalanishimiz kerak.
- Biz faqat dinamik massivlarda ReDim dan foydalanishimiz mumkin.
Xulosa
Biz sizga Excel VBA-da 2D massiv ni “ ReDim Preserve ” ning ikkita tezkor usulini ko'rsatdik. Agar siz ushbu usullar bilan bog'liq muammolarga duch kelsangiz yoki men uchun biron bir fikr-mulohazangiz bo'lsa, quyida sharh qoldiring. Bundan tashqari, Excelga oid boshqa maqolalar uchun ExcelWIKI saytimizga tashrif buyurishingiz mumkin. O'qiganingiz uchun tashakkur, muvaffaqiyatda davom eting!