از نام های محدوده پویا در اکسل برای کشویی های انعطاف پذیر استفاده کنید

صفحات گسترده اکسل(Excel) اغلب شامل کشویی سلولی برای ساده کردن و/یا استاندارد کردن ورود داده می شود. این فهرست‌های کشویی با استفاده از ویژگی اعتبارسنجی داده‌ها برای تعیین فهرستی از ورودی‌های مجاز ایجاد می‌شوند.

برای تنظیم یک لیست کشویی ساده، سلولی را که داده ها در آن وارد می شوند انتخاب کنید، سپس روی Data Validation (در زبانه Data ) کلیک کنید، (Data)Data Validation را انتخاب کنید، لیست(List) را انتخاب کنید (در زیر Allow :)، و سپس موارد لیست را وارد کنید (با کاما از هم جدا شده اند. ) در قسمت Source : (شکل 1 را ببینید).

در این نوع کشویی پایه، فهرست ورودی های مجاز در خود اعتبارسنجی داده ها مشخص می شود. بنابراین، برای ایجاد تغییرات در لیست، کاربر باید اعتبار سنجی داده ها را باز کرده و ویرایش کند. با این حال، این ممکن است برای کاربران بی تجربه یا در مواردی که لیست انتخاب ها طولانی است دشوار باشد.

گزینه دیگر این است که لیست را در یک محدوده نامگذاری شده در صفحه گسترده(named range within the spreadsheet) قرار دهید ، و سپس نام آن محدوده را (با پیشگفتار علامت مساوی) در قسمت Source : اعتبار داده تعیین کنید (همانطور که در شکل 2(Figure 2) نشان داده شده است ).

این روش دوم ویرایش انتخاب‌های فهرست را آسان‌تر می‌کند، اما افزودن یا حذف موارد می‌تواند مشکل‌ساز باشد. از آنجایی که محدوده نام‌گذاری‌شده ( FruitChoices ، در مثال ما) به محدوده ثابتی از سلول‌ها اشاره دارد ($3H$3:$H$10 همانطور که نشان داده شده است)، اگر انتخاب‌های بیشتری به سلول‌های H11 یا پایین‌تر اضافه شوند، در منوی کشویی نشان داده نمی‌شوند. (از آنجایی که آن سلول ها بخشی از محدوده FruitChoices نیستند(FruitChoices) ).

به همین ترتیب، اگر، برای مثال، ورودی‌های Pears و Strawberries پاک شوند، دیگر در فهرست کشویی ظاهر نخواهند شد، بلکه فهرست کشویی شامل دو گزینه خالی خواهد بود، زیرا فهرست بازشو همچنان به کل محدوده FruitChoices، از جمله سلول‌های خالی H9 و H9 اشاره می‌کند. H10 .

به این دلایل، هنگام استفاده از یک محدوده با نام معمولی به عنوان منبع فهرست برای فهرست کشویی، خود محدوده نام‌گذاری شده باید ویرایش شود تا در صورت اضافه یا حذف ورودی‌ها از لیست، تعداد سلول‌های بیشتری یا کمتری را شامل شود.

راه حل این مشکل استفاده از نام محدوده پویا(dynamic) به عنوان منبع برای انتخاب های کشویی است. نام محدوده پویا نامی است که به طور خودکار گسترش می یابد (یا منقبض می شود) تا دقیقاً با اندازه یک بلوک داده مطابقت داشته باشد که ورودی ها اضافه یا حذف می شوند. برای انجام این کار ، به جای یک محدوده ثابت از آدرس های سلول، از یک فرمول برای تعریف محدوده نامگذاری شده استفاده می کنید.(formula)

نحوه تنظیم محدوده دینامیک(Dynamic Range) در اکسل(Excel)

نام محدوده معمولی (ایستا) به محدوده مشخصی از سلول ها اشاره دارد ($H$3:$H$10 در مثال ما، به زیر مراجعه کنید):

اما یک محدوده پویا با استفاده از یک فرمول تعریف می شود (نگاه کنید به زیر، از یک صفحه گسترده جداگانه که از نام دامنه پویا استفاده می کند گرفته شده است):

قبل از شروع، مطمئن شوید که فایل نمونه اکسل ما را دانلود کرده اید  (ماکروهای مرتب سازی غیرفعال شده اند).

بیایید این فرمول را با جزئیات بررسی کنیم. گزینه‌های Fruits در یک بلوک از سلول‌ها مستقیماً زیر عنوان ( FRUITS ) قرار دارند. به آن عنوان نیز یک نام اختصاص داده شده است: FruitsHeading :

کل فرمول مورد استفاده برای تعریف محدوده دینامیکی برای انتخاب های Fruits به شرح زیر است:

=OFFSET(FruitsHeading,1,0,IFERROR(MATCH(TRUE,INDEX(ISBLANK(OFFSET(FruitsHeading,1,0,20,1)),0,0),0)-1,20),1)

FruitsHeading به عنوانی اطلاق می شود که یک ردیف بالاتر از اولین ورودی لیست قرار دارد. عدد 20 (دو بار در فرمول استفاده شده) حداکثر اندازه (تعداد ردیف) لیست است (این می تواند به دلخواه تنظیم شود).

توجه داشته باشید که در این مثال، تنها 8 ورودی در لیست وجود دارد، اما سلول‌های خالی زیر آنها نیز وجود دارد که می‌توان ورودی‌های اضافی را اضافه کرد. عدد 20 به کل بلوکی که در آن می توان ورودی ها را وارد کرد، اشاره دارد، نه به تعداد واقعی ورودی ها.

حالا بیایید فرمول را به قطعات تقسیم کنیم (کد رنگی هر قطعه)، تا بفهمیم چگونه کار می کند:

=OFFSET(FruitsHeading,1,0,IFERROR(MATCH(TRUE,INDEX(ISBLANK(OFFSET(FruitsHeading,1,0,20,1)),0,0),0)-1,20),1)

"درونی ترین" قطعه OFFSET (FruitsHeading,1,0,20,1) است. این به بلوک 20 سلولی (زیر سلول FruitsHeading ) اشاره می کند که در آن انتخاب ها ممکن است وارد شوند. این تابع OFFSET اساساً می گوید: از سلول FruitsHeading شروع کنید ، 1 سطر و بیش از 0 ستون پایین بیایید، سپس ناحیه ای را انتخاب کنید که 20 ردیف طول و 1 ستون عرض دارد. بنابراین بلوک 20 ردیفی را به ما می دهد که در آن گزینه های Fruits وارد می شوند.

قطعه بعدی فرمول تابع ISBLANK است:

=OFFSET(FruitsHeading,1,0,IFERROR(MATCH(TRUE,INDEX(ISBLANK(the above),0,0),0)-1,20),1)

در اینجا، تابع OFFSET (در بالا توضیح داده شد) با "بالا" جایگزین شده است (برای سهولت خواندن مطالب). اما تابع ISBLANK در محدوده 20 ردیفی سلول ها که تابع OFFSET تعریف می کند، کار می کند.

سپس ISBLANK(ISBLANK) مجموعه ای از 20 مقدار TRUE و FALSE ایجاد می کند ، که نشان می دهد که آیا هر یک از سلول های منفرد در محدوده 20 ردیفی که توسط تابع OFFSET ارجاع داده شده است خالی (خالی) است یا خیر. در این مثال، 8 مقدار اول مجموعه FALSE خواهد بود زیرا 8 خانه اول خالی نیستند و 12 مقدار آخر TRUE خواهند بود .

قطعه بعدی فرمول تابع INDEX است:

=OFFSET(FruitsHeading,1,0,IFERROR(MATCH(TRUE,INDEX(the above,0,0),0)-1,20),1)

باز هم، "بالا" به توابع ISBLANK و OFFSET اشاره دارد که در بالا توضیح داده شد. تابع INDEX آرایه ای حاوی 20 TRUE / FALSE ایجاد شده توسط تابع ISBLANK را برمی گرداند .

INDEX معمولاً برای انتخاب یک مقدار خاص (یا محدوده مقادیر) از یک بلوک داده، با تعیین یک ردیف و ستون خاص (در آن بلوک) استفاده می شود. اما صفر کردن ورودی‌های سطر و ستون (همانطور که در اینجا انجام می‌شود) باعث می‌شود INDEX یک آرایه حاوی کل بلوک داده را برگرداند.

قطعه بعدی فرمول تابع MATCH است:

=OFFSET(FruitsHeading,1,0,IFERROR(MATCH(TRUE,the above,0)-1,20),1)

تابع MATCH موقعیت اولین مقدار TRUE را در آرایه ای که توسط تابع INDEX برگردانده می شود، برمی گرداند . از آنجایی که 8 ورودی اول لیست خالی نیستند، 8 مقدار اول در آرایه FALSE و مقدار نهم (FALSE)TRUE خواهد بود (زیرا ردیف نهم در محدوده خالی است).

بنابراین تابع MATCH مقدار 9 را برمی گرداند . با این حال، در این مورد، ما واقعاً می‌خواهیم بدانیم چند ورودی در لیست وجود دارد، بنابراین فرمول 1 را از مقدار MATCH (که موقعیت آخرین ورودی را نشان می‌دهد) کم می‌کند. بنابراین در نهایت، MATCH ( TRUE ، بالا، 0)-1 مقدار 8 را برمی گرداند .

قطعه بعدی فرمول تابع IFERROR(IFERROR) است:

=OFFSET(FruitsHeading,1,0,IFERROR(the above,20),1)

اگر اولین مقدار مشخص شده منجر به خطا شود، تابع IFERROR یک مقدار جایگزین برمی گرداند . (IFERROR)این تابع از آنجایی گنجانده شده است که اگر کل بلوک سلول ها (همه 20 ردیف) با ورودی ها پر شود، تابع MATCH یک خطا برمی گرداند.

این به این دلیل است که به تابع MATCH می گوییم که به دنبال اولین مقدار TRUE (در آرایه مقادیر تابع ISBLANK ) باشد، اما اگر هیچ یک(NONE) از سلول ها خالی نباشد، کل آرایه با مقادیر FALSE پر می شود. (FALSE)اگر MATCH نتواند مقدار هدف ( TRUE ) را در آرایه ای که جستجو می کند پیدا کند، یک خطا برمی گرداند.

بنابراین، اگر کل لیست پر باشد (و بنابراین، MATCH یک خطا را برمی گرداند)، تابع IFERROR(IFERROR) در عوض مقدار 20 را برمی گرداند (با دانستن اینکه باید 20 ورودی در لیست وجود داشته باشد).

در نهایت، OFFSET (FruitsHeading، 1،0، بالا، 1)(OFFSET(FruitsHeading,1,0,the above,1)) محدوده مورد نظر ما را برمی‌گرداند: از سلول FruitsHeading شروع کنید ، 1 سطر و بیش از 0 ستون را پایین بیاورید، سپس ناحیه‌ای را انتخاب کنید که هر چند ردیف طول داشته باشد. ورودی هایی در لیست وجود دارد (و 1 ستون عرض دارد). بنابراین کل فرمول با هم محدوده ای را که فقط شامل ورودی های واقعی است (تا اولین سلول خالی) برمی گرداند.

استفاده از این فرمول برای تعریف محدوده ای که منبع کشویی است به این معنی است که می توانید آزادانه لیست را ویرایش کنید (اضافه یا حذف ورودی ها، تا زمانی که ورودی های باقیمانده از سلول بالایی شروع می شوند و به هم پیوسته هستند) و کشویی همیشه منعکس کننده جریان فعلی است. فهرست ( شکل 6(Figure 6) را ببینید ).

فایل نمونه (فهرست های پویا) که در اینجا استفاده شده است گنجانده شده است و از این وب سایت قابل دانلود است. با این حال، ماکروها کار نمی کنند، زیرا وردپرس از کتاب های (WordPress)اکسل(Excel) با ماکرو در آنها خوشش نمی آید.

به‌عنوان جایگزینی برای تعیین تعداد ردیف‌ها در بلوک فهرست، می‌توان به بلوک فهرست نام محدوده خود را اختصاص داد، که سپس می‌تواند در فرمول اصلاح‌شده استفاده شود. در فایل مثال، لیست دوم ( نام(Names) ها ) از این روش استفاده می کند. در اینجا، کل بلوک لیست (زیر عنوان "NAMES"، 40 ردیف در فایل مثال) به نام محدوده NameBlock اختصاص داده می شود . فرمول جایگزین برای تعریف NamesList به این صورت است:

=OFFSET(NamesHeading,1,0,IFERROR(MATCH(TRUE,INDEX(ISBLANK(NamesBlock),0,0),0)-1,ROWS(NamesBlock)),1)

که در آن NamesBlock جایگزین OFFSET ( FruitsHeading,1,0,20,1 ) و ROWS(NamesBlock) جایگزین 20 (تعداد ردیف) در فرمول قبلی می شود.

بنابراین، برای لیست‌های کشویی که به راحتی قابل ویرایش هستند (از جمله توسط سایر کاربرانی که ممکن است بی‌تجربه باشند)، از نام‌های محدوده پویا استفاده کنید! و توجه داشته باشید که اگرچه این مقاله بر روی لیست‌های کشویی متمرکز شده است، نام‌های محدوده پویا را می‌توان در هر جایی که برای ارجاع به محدوده یا فهرستی که می‌تواند از نظر اندازه متفاوت باشد، استفاده کرد. لذت بردن!



About the author

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



Related posts