
چرا آدرس دهی بسیار مهم است؟
همانطور که قبلا گفتم فرمول نویسی حرفه ای اصول و قوانینی داره که یکی از مهم ترین موضوعات، بحث مطلق/نسبی (Absolute/Relative) بودن آدرس محدوده هاست. این موضوع وقتی مطرح میشه که بخوایم فرمولی که نوشتیم رو Drag کنیم. اگر به این مسئله تسلط عالی نداشته باشیم، هیچ وقت نمیتونیم به فرمولی که می نویسیم و درگ می کنیم اعتماد کنیم و مجبوریم تک تک نتایج رو بررسی کنیم که این کار در مقیاس های بزرگ بسیار وقتگیر خواهد بود. برای درک بهتر این موضوع (آدرس دهی) اول باید با نحوه ارجاع به یک سلول و یا فراخوانی یک سلول در اکسل آشنا بشیم که به دو روش صورت میگیره:
- مدل A1
- مدل R1C1 یا (Row1Column1~ ردیف۱ستون۱)
هر دوی این آدرس ها به سل A1 اشاره می کنند که پیش فرض اکسل، همون حالت اول یعنی A1 است. فقط یک نکته اینکه درصورتی که بخواهیم از حالت دوم استفاده کنیم، باید تیک گزینه R1C1 reference style در شکل ۱ را بزنیم تا سرستون های اکسل از A, B, C… به ۱,۲,۳… و در نتیجه نوع آدرس دهی از A1 به R1C1 تغییرکند.

شکل۱- آدرس دهی – تغییر نوع آدرس دهی دراکسل
حالا با حل یک مثال، بحث نسبی و مطلق بودن آدرس در فرمول نویسی رو شرح میدم:
محدوده ای از اعداد داریم که میخواهیم همه رو در یک سل به خصوص ضرب کنیم. طبق شکل ۱، در سل C2 می نویسیم A2*C1= و درگ می کنیم. مسئله ای که پیش میاد این هست که همه سل ها در حین درگ کردن، با هم حرکت میکنند (مطابق شکل ۱).

شکل ۲- آدرس دهی – درگ کردن فرمول (نتیجه غلط)
در حالیکه ما میخواهیم سل C1 ثابت باشه و فقط سل های ستون A تغییر کنند. یعنی چیزی مطابق با شکل ۲٫
من این فرمول رو بصورت دستی برای هر سل تایپ کردم. اما اگر حجم داده ها زیاد بود هم امکان این کار وجود داشت؟ پس باید راهی وجود داشته باشه تا بتونیم تصمیم بگیریم در حین درگ کردن، کدام سل ها تغییر کنند و کدام ها تغییر نکنند.

شکل۳- آدرس دهی – فرمول مد نظر بعد از درگ کردن
درگ کردن در اکسل به دو صورت هست. در لحظه یا در ستون حرکت میکنیم (به سمت بالا و پایین) و یا در سطر(به سمت چپ و راست).
وقتی در ستون حرکت میکنیم (بالا یا پایین) فقط ردیف سل حرکت کننده تغییر می کند و وقتی در ردیف حرکت میکنیم (چپ یا راست) فقط ستون سل حرکت کننده تغییر میکند.
پس برای مطلق/نسبی کردن آدرس سل ها در فرمول ها:
- اول باید ببینیم در کدام مسیر داریم حرکت میکنیم (سطر یا ستون) و چه چیزی در حال تغییر است (شماره ردیف یا نام ستون)؟
- بعد تصمیم بگیریم که آیا میخواهیم تغییر کند یا ثابت بماند؟
وقتی میخواهیم سطر یا ستون رو فیکس کنیم، باید یک علامت $ پشت شماره ردیف یا نام ستون بذاریم. با این تفاسیر، چهار حالت برای آدرس دهی داریم:
| سطر آزاد-ستون آزاد | A1 | با درگ کردن در ستون، شماره ردیف تغییر میکند |
| سطر مطلق-ستون مطلق | $A$1 | با درگ کردن در ستون، شماره ردیف تغییر نمیکند |
| سطر آزاد-ستون مطلق | $A1 | با درگ کردن در ستون، شماره ردیف تغییر میکند |
| سطر مطلق-ستون آزاد | A$1 | با درگ کردن در ستون، شماره ردیف تغییر نمیکند |
حالا برگردیم به همان سوال اول. میخواهیم $ را برای فرمول A2*C1= تنظیم کنیم که با درگ کردن، بدرستی عمل کند. چون در ستون داریم حرکت میکنیم، پس فقط شماره ردیف تغییرمیکنه. حالاما باید تصمیم بگیریم کدوم شماره ردیف تغییر کنده و کدوم ثابت بمونه. چون میخواهیم سل C1 ثابت بمونه و در همه سل ها تکرار بشه (شکل۳)، پس مطابق شکل ۴، $ را پشت ۱ در C1 میگذاریم. اما میخواهیم A2 درسل های بعدی به A3 و A4 و… تغییر کند.پس $ نیازی ندارد.

شکل ۴- آدرس دهی – درگ کردن فرمول (نتیجه درست)
علامت $ را هم میتونیم مستقیما تایپ کنیم. هم اینکه از کلید F4 استفاد کنیم. وقتی روی آدرس مورد نظر قرار بگیریم، با هر بار F4 زدن، یکی از ۴ حالت آدرس دهی ظاهر میشه.
مثال دوم:
میخواهیم یک جدول ضرب ایجاد کنیم. فرمول خیلی ساده هست، A2*B1=. حالا باید طوری آدرس دهی کنیم که با انتقال آن به کل جدول، محاسبات به درستی انجام شود. به شکل ۵ دقت کنید. علامت $ پشت نام A و ردیف ۱ قرار گرفته. چرا؟

شکل ۵- آدرس دهی در جدول ضرب
A2*B1= رو در نظر بگیرید. وقتی در ستون حرکت میکنیم، همواره میخواهیم اعداد موجود در ردیف ۱ در بقیه اعداد که در ستون A هستن، ضرب بشن. پس ردیف ۱ را فیکس میکنیم. وقتی هم که در ردیف حرکت میکنیم، میخواهیم عدد موجود در ستون A در بقیه اعداد ردیف ۱ ضرب بشن. پس $ ها رو به این صورت اعمال میکنیم A2*B$۱ا$=. بعبارت کلی، هر جای این جدول ضرب هستیم، میخواهیم عددی در ردیف۱ ضرب در عددی در ستون A بشه. پس ردیف ۱ و ستون A در فرمول باید فیکس بشه.
مبحث آدرس دهی بسیار بسیار مهمه. کسی که میخواد فرمول نویس حرفه ای بشه، حتما باید به این موضوع تسلط کافی داشته باشه. پس علاوه بر تمرین و تکرار دو مثال تشریح شده، حتما مثال های مختلفی رو امتحان کنید تا کاملا ملکه ذهنتون بشه. هر موقع بحث درگ کردن و انتقال فرمول پیش میاد، اول از همه برید سراغ $ و آدرس دهی رو تنظیم کنید بعد شروع کنید به انتقال فرمول.
مشاهده ویدئو آدرس دهی در اکسل
در این ویدئو نحوه استفاده صحیح از $ جهت ایجاد فرمول های درست آموزش داده شده:
[jwp-video n=”1″]





من یک اکسل با دو تا ستون دارم ستون اول کدهای ثابت هستن مثلا از ۷۳۰و۷۳۱و۷۳۲و۷۳۳و۷۳۴و۷۳۵
ستون دوم مبالغ در روبروی هر کد نوشته شده است
من میخوام به اکسل بگم اعداد ۷۳۰ و ۷۳۲ و ۷۳۴ رو در ستون یک پیدا کن و مبالغ روبروی آن را با هم جمع کن امکان داره در ستون اول چندین کد مشابه مثل ۷۳۴ داشته باشیم که باید همه اونها رو جمع کنه
ممنون از راهنماییتون
سلام
این فرمول میتونه اعداد مقابل کدهای زوج رو جمع کنه با هم
=SUM(IF(MOD(A1:A12,2)=0,B1:B12,””))
سلام وقت بخیر
میشه لطف کنید بگید جواب این سوال کدوم گزینه میشه ؟
کدام یک از موارد زیر نمیتواند آدرس خانه باشد ؟
b2
cd1
a1
ba2
سلام
سوال غلطه
هر ۴ تا ادرس سلول هستن
سلام ببخشید
سلول A2 محل برخورد ستون —————وسطر ——————است
الف)۱-۲ب)۱-۳ج)۲-۳د)۱-۴
ممنون میشم بگید کدومه جوابش
درود
الف
:)
سلام وقت بخیر میشه بگید چه دستوری تو ولیدیشن اکسل بنویسم که هم تعداد کد پرسنلی مثلا ۹ رقمی رو کنترل کنه و هم از ورود داده تکراری جلوگیری کنه ممنون
درود بر شما
and باید بزنید و ۲ تا شرط رو داخلش بیارید
len تعداد کاراکتر رو میشماره
Countifs هم که تکراری بودن
اختار کلی میشه این:
and(countif,len)
وقت به خیر.
اکسل من پیش فرض ادرس دهی مطلق . چه جوری میتونم تبدیل کنم به نسبی؟
با تشکر
درود
تا جایی که میدونم در کاندیشنال فرمتینگ و name manager و … پیشفرض مطلقه
در فرمول نویسی معمولی پیشفرض نسبیه
درود بر شما بسیار عالی:در مبحث آموزشی دالر فرمول d10=درگ چرا انجام نمیشود با دابل کلیک فرمول به صفر تغییر می کند طبق صفحه نمایش شما از today هم استفاده کردم اما نشد
سپاسگزارم
درود بر شما
یعنی نتیجه فرمول صفر میشه؟!
که بخاطر $ هست
در غیر اینصورت سوال واضح نیست
سلام – یه شیت دارم که توش رفرنس داده ام به یک فایل دیگه در پوشه الف
حالا شیت رو کپی کردم و فقققط میخوام نام رفرنس اون فایل که در پوشه الف هست به نام دیگه ای که اون فایل دوم هم توی پوشه الف موجوده تغییر کنه؛ میشه راهنمایی بفرمایید؟
درود
نام ها رو میتونید بیارید داخل یک سلول و از اون بگیرید و بعد آدرس لینک رو با & بسازید (عینا مطابق با الگوی خودش)
هر موقع اسم تغییر کنه میر ه از همون اسم میاره
فراموش نکنید آدرس نهایی رو بذارید در تابع indirect