فهرست مطالب
در این آموزش، نحوه ایجاد یک محدوده نامگذاری شده پویا در اکسل و نحوه استفاده از آن در فرمولها برای گنجاندن خودکار دادههای جدید در محاسبات را خواهید آموخت.
در هفته گذشته آموزش، ما به روش های مختلف برای تعریف محدوده ای استاتیک با نام در اکسل نگاه کردیم. یک نام ثابت همیشه به سلولهای یکسانی اشاره دارد، به این معنی که هر زمان که دادههای جدید را اضافه یا حذف میکنید، باید مرجع محدوده را بهصورت دستی بهروزرسانی کنید.
اگر با مجموعه دادهای دائماً در حال تغییر کار میکنید، ممکن است بخواهید محدوده نامگذاری شده خود را پویا کنید تا بهطور خودکار گسترش یابد تا ورودیها یا قراردادهای جدید اضافه شده را حذف کند تا دادههای حذف شده را حذف کند. در ادامه این آموزش، راهنمای دقیق گام به گام در مورد نحوه انجام این کار را خواهید یافت.
نحوه ایجاد یک محدوده با نام پویا در اکسل
برای برای شروع، بیایید یک محدوده با نام پویا متشکل از یک ستون و تعداد متغیر سطر بسازیم. برای انجام این کار، این مراحل را انجام دهید:
- در برگه Formula ، در گروه Defined Names ، روی Define Name کلیک کنید. . یا، Ctrl + F3 را فشار دهید تا Excel Name Manger باز شود، و روی دکمه New… کلیک کنید.
- در هر صورت، کادر گفتگوی New Name باز می شود، جایی که شما جزئیات زیر را مشخص می کنید:
- در کادر Name ، نام محدوده دینامیکی خود را تایپ کنید.
- در منوی کشویی Scope ، محدوده نام کتاب کار (پیشفرض) در اکثر موارد توصیه میشودموارد.
- در کادر اشاره به ، فرمول OFFSET COUNTA یا INDEX COUNTA را وارد کنید.
- OK را کلیک کنید. انجام شد!
در تصویر زیر، یک محدوده با نام پویا اقلام تعریف می کنیم که همه سلول های دارای داده در ستون A را به جز ردیف سرصفحه در خود جای می دهد. :
> ( سلول_اول ، 0، 0، COUNTA( ستون )، 1)
کجا:
- سلول_اول - اولین موردی که باید در محدوده نامگذاری شده گنجانده شود، برای مثال $A$2.
- ستون - یک مرجع مطلق به ستونی مانند $A:$A.
در هسته این فرمول، از تابع COUNTA برای بدست آوردن تعداد سلول های غیر خالی در ستون مورد نظر استفاده می کنید. این عدد مستقیماً به آرگومان height تابع OFFSET (مرجع، ردیفها، ستونها، [ارتفاع]، [عرض]) میرود و به آن میگوید چند ردیف باید برگرداند.
فراتر از آن، این یک فرمول Offset معمولی است، که در آن:
- مرجع نقطه شروعی است که از آن افست (first_cell) را پایه گذاری می کنید.
- ردیف ها و cols هر دو 0 هستند، زیرا هیچ ستون یا ردیفی برای افست وجود ندارد.
- عرض برابر با 1 ستون است.
=OFFSET(Sheet3!$A$2, 0, 0, COUNTA(Sheet3!$A:$A), 1)
توجه. اگر تعریف می کنیدیک محدوده دینامیکی در کاربرگ فعلی، لازم نیست نام برگه را در مراجع ذکر کنید، اکسل این کار را به صورت خودکار برای شما انجام می دهد. اگر در حال ساخت محدوده ای برای برگه دیگری هستید، پیشوند سلول یا مرجع محدوده را با نام برگه و به دنبال آن علامت تعجب قرار دهید (مانند مثال فرمول بالا).
فرمول INDEX برای ایجاد یک محدوده با نام پویا در Excel
یک راه دیگر برای ایجاد محدوده پویا اکسل استفاده از COUNTA در ترکیب با تابع INDEX است.
first_cell:INDEX( column,COUNTA( column))این فرمول از دو بخش تشکیل شده است:
- در سمت چپ عملگر محدوده (:)، شما مرجع شروع با کد سخت مانند $A$2 را قرار می دهید. .
- در سمت راست، از تابع INDEX(آرایه، row_num، [column_num]) برای تعیین مرجع پایانی استفاده می کنید. در اینجا، کل ستون A را برای آرایه ارائه میکنید و از COUNTA برای دریافت شماره ردیف (یعنی تعداد سلولهای غیر ورودی در ستون A) استفاده میکنید.
برای مجموعه داده نمونه ما (لطفاً به اسکرین شات بالا)، فرمول به شرح زیر است:
=$A$2:INDEX($A:$A, COUNTA($A:$A))
از آنجایی که 5 سلول غیر خالی در ستون A، از جمله سرصفحه ستون وجود دارد، COUNTA عدد 5 را برمی گرداند. در نتیجه، INDEX $A را برمی گرداند. $5، که آخرین سلول استفاده شده در ستون A است (معمولا فرمول Index مقداری را برمی گرداند، اما عملگر مرجع آن را مجبور می کند که یک مرجع را برگرداند). و از آنجایی که ما $2 A$ را به عنوان نقطه شروع قرار داده ایم، نتیجه نهایی ازفرمول محدوده $A$2:$A$5 است.
برای آزمایش محدوده دینامیکی جدید ایجاد شده، می توانید از COUNTA بخواهید تعداد موارد را واکشی کند:
=COUNTA(Items)
اگر همه چیز به درستی انجام شود، پس از افزودن یا حذف موارد به/از لیست، نتیجه فرمول تغییر خواهد کرد:
توجه داشته باشید. دو فرمول مورد بحث در بالا نتیجه یکسانی دارند، با این حال تفاوتی در عملکرد وجود دارد که باید از آن آگاه باشید. OFFSET یک تابع فرار است که با هر تغییر در یک ورق دوباره محاسبه می شود. در ماشینهای مدرن قدرتمند و مجموعههای داده با اندازه معقول، این نباید مشکلی ایجاد کند. در ماشینهای با ظرفیت کم و مجموعه دادههای بزرگ، این ممکن است سرعت اکسل شما را کند کند. در این صورت، بهتر است از فرمول INDEX برای ایجاد یک محدوده با نام پویا استفاده کنید.
نحوه ایجاد محدوده دینامیکی دو بعدی در اکسل
برای ساخت یک محدوده نامگذاری شده دو بعدی، جایی که نه تنها تعداد ردیفها، بلکه تعداد ستونها نیز پویا است، از اصلاح زیر در فرمول INDEX COUNTA استفاده کنید:
first_cell:INDEX($1:$1048576, COUNTA( first_column)، COUNTA( first_row)))در این فرمول، شما دو تابع COUNTA دارید تا آخرین سطر غیر خالی و آخرین ستون غیر خالی ( row_num ) را بدست آورید. و به ترتیب آرگومان های column_num تابع INDEX). در آرگومان آرایه ، کل کاربرگ را تغذیه می کنید (1048576 ردیف در اکسل 2016 - 2007؛ 65535 ردیف در اکسل 2003 و پایین تر).
و اکنون،بیایید یک محدوده پویا دیگر را برای مجموعه دادههای خود تعریف کنیم: محدوده با نام فروش که شامل ارقام فروش برای 3 ماه (ژانویه تا مارس) است و با افزودن موارد جدید (ردیفها) یا ماهها (ستونها) به طور خودکار تنظیم میشود. جدول.
با شروع داده های فروش در ستون B، ردیف 2، فرمول به شکل زیر است:
=$B$2:INDEX($1:$1048576,COUNTA($B:$B),COUNTA($2:$2))
برای اینکه مطمئن شوید محدوده دینامیکی شما همانطور که باید کار می کند، فرمول های زیر را در جایی روی برگه وارد کنید:
=SUM(sales)
=SUM(B2:D5)
همانطور که در تصویر زیر می بینید ، هر دو فرمول مجموع یکسانی را برمی گرداند. تفاوت در لحظه ای که ورودی های جدید را به جدول اضافه می کنید خود را نشان می دهد: فرمول اول (با محدوده نامگذاری شده پویا) به طور خودکار به روز می شود، در حالی که فرمول دوم باید به صورت دستی با هر تغییر به روز شود. این تفاوت بزرگی ایجاد می کند؟
چگونه از محدوده های نامگذاری شده پویا در فرمول های اکسل استفاده کنیم
در بخش های قبلی این آموزش، قبلاً دیده اید چند فرمول ساده که از محدوده دینامیکی استفاده می کنند. اکنون، بیایید سعی کنیم چیزی معنادارتر پیدا کنیم که ارزش واقعی یک محدوده نامگذاری شده پویا اکسل را نشان دهد.
برای این مثال، ما میخواهیم فرمول کلاسیک INDEX MATCH را که Vlookup را در اکسل انجام میدهد، انتخاب کنیم:
...و ببینید چگونه ما می تواند فرمول را حتی با استفاده ازمحدوده های با نام پویا.
همانطور که در تصویر بالا نشان داده شده است، ما در حال تلاش برای ساخت یک داشبورد هستیم که در آن کاربر نام یک مورد را در H1 وارد می کند و کل فروش آن مورد را در H2 دریافت می کند. جدول نمونه ما که برای اهداف نمایشی ایجاد شده است فقط شامل 4 مورد است، اما در برگه های واقعی شما می تواند صدها و حتی هزاران ردیف وجود داشته باشد. علاوه بر این، موارد جدید را می توان به صورت روزانه اضافه کرد، بنابراین استفاده از منابع یک گزینه نیست، زیرا باید بارها و بارها فرمول را به روز کنید. من برای آن تنبل هستم! :)
برای وادار کردن فرمول به گسترش خودکار، میخواهیم 3 نام را تعریف کنیم: 2 محدوده پویا و 1 سلول با نام ثابت:
Lookup_range: =$A$2:INDEX($ A:$A، COUNTA($A:$A))
بازگشت_بازگشت: =$E$2:INDEX($E:$E، COUNTA($E:$E))
Lookup_value: =$H$1
توجه داشته باشید. اکسل نام برگه فعلی را به همه مراجع اضافه می کند، بنابراین قبل از ایجاد نام ها، حتماً برگه را با داده های منبع خود باز کنید.
اکنون، شروع به تایپ فرمول در H1 کنید. وقتی نوبت به آرگومان اول می رسد، چند کاراکتر از نامی را که می خواهید استفاده کنید تایپ کنید، و اکسل همه نام های مطابق موجود را نشان می دهد. روی نام مناسب دوبار کلیک کنید و اکسل آن را فوراً در فرمول وارد می کند:
فرمول تکمیل شده به صورت زیر است:
=INDEX(Return_range, MATCH(Lookup_value, Lookup_range, 0))
و کاملاً کار می کند!
به محض اینکه رکوردهای جدیدی به جدول اضافه کنید، در محاسبات شما دریک بار، بدون اینکه مجبور باشید حتی یک تغییر در فرمول ایجاد کنید! و اگر زمانی نیاز به پورت فرمول به فایل اکسل دیگری داشتید، به سادگی همان نامها را در کتاب کار مقصد ایجاد کنید، فرمول را کپی/پیست کنید و فوراً کار کند.
نکته. جدا از اینکه فرمولها را بادوامتر میکنند، محدودههای پویا برای ایجاد لیستهای کشویی پویا مفید هستند.
به این ترتیب محدودههای نامگذاری شده پویا در اکسل ایجاد و استفاده میکنید. برای مشاهده دقیقتر فرمولهای مورد بحث در این آموزش، میتوانید نمونه کار کتاب Excel Dynamic Named Range را دانلود کنید. از خواندن شما سپاسگزارم و امیدوارم هفته آینده شما را در وبلاگ خود ببینم!