نحوه ReDim Preserve Array 2D در Excel VBA (2 روش آسان)

  • این را به اشتراک بگذارید
Hugh West

آرایه متغیری است که انواع مشابهی از داده ها را نگه می دارد. اگر فقط یک ردیف یا یک ستون از داده وجود داشته باشد، آنگاه به عنوان یک آرایه یک بعدی شناخته می شود. با این حال، زمانی که بیش از یک سطر و ستون وجود داشته باشد، آرایه دو بعدی نامیده می شود. ما از ReDim برای تغییر اندازه آرایه در VBA استفاده می کنیم. علاوه بر این، ما از کلمه کلیدی Preserve با ReDim استفاده می کنیم تا داده های قدیمی را دست نخورده نگه داریم. این مقاله 2 روش های سریع برای " ReDim Preserve " آرایه دو بعدی در Excel VBA<را به شما نشان می دهد. 3> .

دانلود کتاب تمرین تمرین

Macro to ReDim Preserve 2D.xlsm

2 روش کاربردی برای ReDim Preserve 2D Array در Excel VBA

این مجموعه داده پایه است که از یک آرایه دو بعدی با سه ردیف و دو ستون ایجاد شده است. ابتدا این آرایه را ایجاد می کنیم. سپس ستون دیگری به این آرایه اضافه می کنیم. ما از " ReDim Preserve " برای انجام این کار استفاده خواهیم کرد. علاوه بر این، نشان خواهیم داد که اگر از این استفاده نکنیم چه اتفاقی می‌افتد.

به‌طور پیش‌فرض، ما فقط می‌توانیم اندازه آخرین بعد آرایه (یعنی ستون‌ها یا کران بالا) را تغییر دهیم. آرایه را جابه‌جا می‌کنیم، سپس آخرین بعد را تغییر می‌دهیم، و سپس دوباره برای تغییر اندازه هر دو بعد آرایه 2 بعدی در Excel VBA، جابه‌جا می‌کنیم.

1 ReDim Preserve Last Dimension 2D Array

ما ابتدا 2D Array را پویا تعریف می کنیم. سپس با استفاده از عبارت ReDim ، یک عدد ایجاد می کنیمآرایه ای با سه ردیف و دو ستون. در نهایت، ما دوباره از عبارت ReDim با کلمه کلیدی Preserve استفاده خواهیم کرد. کران بالای آرایه دو بعدی را افزایش دهید.

مراحل:

  • برای شروع، ALT+F11 را فشار دهید. برای باز کردن پنجره VBA Module . از طرف دیگر، می توانید این کار را از برگه Developer انجام دهید → Visual Basic را انتخاب کنید.
  • سپس، از درج برگه → Module را انتخاب کنید. ما کد VBA را در اینجا تایپ می کنیم.

  • بعد، کد زیر را در Module تایپ کنید. پنجره.
3383

تشکیل کد VBA

  • ابتدا، ما در حال تماس هستیم Sub procedure " Redim_Preserve_2D_Array_Row ".
  • سپس، متغیر Our_Array را به عنوان یک آرایه پویا اعلام می کنیم.
  • بعد، اندازه آرایه را تعریف می کنیم. کران پایین 3 ، کران بالا 2 است، و هر دو از 1 شروع می‌شوند.
  • سپس، مقادیری را به آرایه اختصاص می‌دهیم. .
  • پس از آن، مقادیر را در محدوده سلولی C6:D8 وارد می کنیم.
  • پس از آن، ما کد را اجرا می کند.
  • بنابراین، ذخیره Module و فشار دهید Run .

  • در نتیجه، مقادیر را به محدوده سلولی تعریف شده برمی گرداند. می بینیم که " Rachel " در ردیف 1 و ستون 1 قرار دارد،که در کد VBA به صورت ( 1,1 ) تعریف شده است.

  • اکنون، اندازه آرایه را تغییر می دهیم.
  • بنابراین، این را به کد قبلی اضافه کنید و اولین عبارت Range.Value را حذف کنید. علاوه بر این، نحوه ظاهر کد را می توانید از عکس فوری زیر مشاهده کنید.
7612

  • در اینجا، کران بالایی را از ( ) افزایش داده ایم. 1 به 2 ) به ( 1 به 3 ) توسط 1 .
  • سپس، مقادیر را به آرایه اضافه کرده ایم.
  • حالا اگر این کد را اجرا کنیم، می بینیم که مقادیر قبلی حفظ نشده اند. برای مقادیر قبلی خالی خواهد شد.

  • اکنون، می‌توانیم با اضافه کردن کلید کلیدی به این مشکل را برطرف کنیم. 1>گزاره ReDim .
  • در نهایت، کد کامل ما این خواهد بود.
4537

  • حالا، اگر این کد را اجرا کنید سپس خروجی به این صورت خواهد بود. بنابراین، ما " ReDim Preserve " آخرین بعد یک آرایه دو بعدی را در Excel VBA خواهیم داد. اکنون، روش بعدی به شما نشان می دهد که چگونه " ReDim حفظ " و تغییر اندازه هر دو بعد آرایه. مقادیر از ستون به آرایه در اکسل (3 معیار)

    خواندنی های مشابه

    • نحوه نامگذاری آرایه جدول در اکسل (با مراحل آسان)
    • Excel VBA برای خواندن فایل CSV به آرایه (4 مثال ایده آل)
    • نحوه تبدیل محدوده به آرایه در اکسلVBA (3 روش)
    • Excel VBA: حذف موارد تکراری از یک آرایه (2 مثال)

    2. ReDim حفظ هر دو بعد آرایه دو بعدی در Excel VBA

    در این روش نهایی، مراحل تغییر اندازه و " ReDim Preserve " آرایه دو بعدی را به شما نشان خواهیم داد. در اینجا، ما از تابع VBA Transpose برای تغییر اندازه کران پایین آرایه استفاده خواهیم کرد. اگر در روش اول سعی کردیم اندازه کران پایین آرایه را تغییر دهیم، خطای « Subscript out of range » را خواهیم دید. اکنون بدون هیچ مقدمه ای، بیایید ببینیم چگونه می توانیم این مشکل را برطرف کنیم و به هدف خود برسیم.

    مراحل:

    • ابتدا، همانطور که در روش اول نشان داده شده است ، پنجره Module را باز کنید.
    • دوم، خطوط کد زیر را به آن اضافه کنید. کد اول.
    8682
    • علاوه بر این، کد روش نهایی به این صورت است.
    8436

    تجزیه کد VBA

    • ابتدا، ما روش فرعی " ReDim_Preserve_2D_Array_Both_Dimensions " را فراخوانی می کنیم. .
    • سپس، بقیه کدها تا تابع VBA Transpose مانند کد اول هستند.
    • در اینجا، ما در حال جابجایی آرایه هستند.
    • سپس، کران بالای آرایه را افزایش می دهیم.
    • بعد از آن، آرایه را دوباره جابجا می کنیم. بنابراین، در نهایت کران پایین را تغییر می‌دهد.
    • بعد، مقادیر تغییر اندازه آرایه را در حالی کهحفظ داده های قدیمی.
    • در آخر، مقادیر را در محدوده سلولی C6:E9 می نویسیم.
    • بعد از آن که، همانطور که در روش اول نشان داده شده است ، این کد را اجرا کنید .
    • بنابراین، می‌توانیم تجسم کنیم که چگونه کد یک را حفظ می‌کند. آرایه دو بعدی با استفاده از " ReDim Preserve " و تابع VBA Transpose .

    بیشتر بخوانید: VBA برای انتقال آرایه در اکسل (3 روش)

    چیزهایی که باید به خاطر بسپارید

    • ReDim Preserve نمی تواند کران پایین آرایه را تغییر دهد. برای انجام این کار، باید از تابع Transpose استفاده کنیم.
    • ما فقط می توانیم از ReDim در آرایه های پویا استفاده کنیم.

    نتیجه

    ما دو راه سریع برای " ReDim Preserve " 2D Array در Excel VBA به شما نشان دادیم. اگر در رابطه با این روش ها با مشکلی مواجه شدید یا بازخوردی برای من دارید، در زیر نظر دهید. علاوه بر این، می توانید از سایت ما ExcelWIKI برای مقالات بیشتر مرتبط با اکسل دیدن کنید. از خواندن متشکریم، به عالی بودن ادامه دهید!

هیو وست یک مربی و تحلیلگر اکسل بسیار با تجربه با بیش از 10 سال تجربه در این صنعت است. وی دارای مدرک لیسانس در رشته حسابداری و امور مالی و مدرک کارشناسی ارشد در رشته مدیریت بازرگانی است. هیو علاقه زیادی به تدریس دارد و یک رویکرد آموزشی منحصر به فرد ایجاد کرده است که به راحتی قابل پیگیری و درک است. دانش تخصصی او از اکسل به هزاران دانش آموز و متخصص در سراسر جهان کمک کرده تا مهارت های خود را بهبود بخشند و در حرفه خود برتری پیدا کنند. هیو از طریق وبلاگ خود دانش خود را با جهان به اشتراک می گذارد و آموزش های رایگان اکسل و آموزش آنلاین ارائه می دهد تا به افراد و مشاغل کمک کند تا به پتانسیل کامل خود دست یابند.