روی فرمولی دارد که به سلولی در کتاب کار دیگری ارجاع می دهد، به عنوان =[Timesheets.xlsm]Week01!L6. او میخواهد فرمول نام کاربرگ (Week01) را از یک سلول دیگر انتخاب کند تا فرمول عمومیتر شود. روی تعجب می کند که چگونه باید فرمول را تغییر دهد تا بتواند از هر نام کاربرگ موجود در سلول B9 استفاده کند.
ساده ترین راه برای رسیدگی به این موضوع استفاده از تابع کاربرگ INDIRECT است. در اصل، آدرس سلولی را می گیرد و از آن به عنوان "اشاره گر" استفاده می کند و سپس مقدار را از آن سلول بازیابی می کند. به عنوان مثال، می توانید از موارد زیر استفاده کنید:
=INDIRECT(L6)
این باعث می شود که مقدار سلول L6 واکشی شود و به عنوان نشانگر آنچه واقعاً می خواهید استفاده شود. بنابراین، اگر سلول L6 حاوی "A7" باشد، تابع مقدار هر آنچه در سلول A7 است را برمیگرداند. جالب است که اگر تابع را به این روش فراخوانی کنید، نتیجه متفاوتی دریافت می کنید:
=INDIRECT("L6")
نتیجه به جای استفاده از محتویات سلول L6 به عنوان نشانگر، محتویات سلول L6 است.
با استفاده از این اطلاعات، می توانید به راحتی آدرسی را جمع آوری کنید که با تابع INDIRECT به درستی کار کند:
=INDIRECT("[Timesheets.xlsm]" & K2 & "!L6")
این فرمول فرض می کند که نام کاربرگ مورد نظر در سلول K2 ذخیره می شود. اگر نام کاربرگ معتبری در آن سلول نباشد، فرمول یک خطای #REF را برمیگرداند.
یکی از "گفتگوهای" مهم با این رویکرد این است که باید مطمئن شوید که کتاب کار (Timesheets.xlsm) باز است. INDIRECT به یک کتاب کار باز نشده دسترسی پیدا نمی کند. اگر باز نباشد، به جای مقدار مورد نظر، یک خطای #REF دریافت خواهید کرد.
اگر میخواهید فرمول را حتی برای همه منظورهتر کنید، میتوانید نام کتاب کار، نام کاربرگ و مرجع سلول را از سلولهای داخل کاربرگ خود بیرون بکشید، مانند این روش:
=INDIRECT("[" & K1 & "]" & K2 & "!" & K3)
در این مثال، K1 حاوی نام کتاب کار (Timesheets.xlsm)، K2 حاوی نام کاربرگ ("Week01") و K3 حاوی سلول مورد نظر ("L6") است.