
چرا آدرس دهی بسیار مهم است؟
همانطور که قبلا گفتم فرمول نویسی حرفه ای اصول و قوانینی داره که یکی از مهم ترین موضوعات، بحث مطلق/نسبی (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″]





سلام
وقت بخیر
چه راهی وجود داره که با تعیین یکسری شرایط در سلول ۱، تغییر و یا ثبت اطلاعات در سلول۲ خروجی من باشه؟
سلام
اگر هدف این باشه که با استفاده از شرایطی که در سلول ۱ تعریف میشه، ورود داده در سلول ۲ محدود بشه، جواب فرمول نویسی در Data Validation هست.
اگر هدف این باشه که با استفاده از اطلاعاتی که در سلول ۱ نوشته میشه تعییراتی در خروجی سلول ۲ به وجود بیاد که جواب استفاده از فرمول در سلول ۲ هست.
این نکته رو دقت داشته باشید که اعمال همزمان این دو در سلول غیر منطقی هست و شما باید در آن واحد یکی از آنها رو اعمال کنید.
سلام وقت بخیر
برای اینکه بدونیم از مقداریک سل اکسل کجاها و برای محاسبه چه سل هایی استفاده شده باید چیکار کنیم. برای مثال از سل A1 در محاسبه مقدار سل های A3، G4و… استفاده شده باشه (که ما نمیدونیم). تابعی رو میخوایم که سلهای A3 G4و… رو برای سل A1 مشخص کنه.
درود
هم در تب formula و هم در Go to / Special از گزینه های Precedents و Dependents میتونید استفاده کنید
سلام آدرس دهی دو بعدی در اکسل چیه لطفا یکی کمکم کنه؟
درود
دو بعدی همون ادرس دهی معمولی هست
A1 یک بعد ستون و یک بعد ردیف هست
سه بعدی که باشه اسم شیت هم اضافه میشه
باسلام
چطور در تیبل فرمولها برای هر سطر جداگانه تعریف کنیم یا خاصیت یکسانی فرمول ها در تیبل از بین بره؟
باتشکر
درود
کنارش یک زبان باز میشه، گزینه Stop automatically creating calculated columns
میاد
بزنید که کنسل بشه
سلام
وقتتون بخیر
تشکر بابت مطالب مفید و کاربردی
اطلاعات موجود:
داخل شیت اول، ستون اول تعدادی کد کالا وارد شده و در همان شیت، ستون دوم موجودی این کالاها
داخل شیت دوم، در ستون اول و دوم کد و موجودی درخواست های هر روز ثبت میشه
سوال:
روش کنترل موجودی، که هنگام ثبت اطلاعات در شیت دوم، اگر درخواست های ثبت شده از موجودی ثبت شده در شیت اول بیشتر شد، مثلاً رنگ سلول کد در شیت دوم قرمز شود و یا روش دیگری
ممنون از همکاریتون
سلام
وقت بخیر
کافیه در قسمت فرمول نویسی Conditional Formatting از ترکیب توابع Sumif و IF استفاده کنید.
با سلام و تشکر فراوان
ابتدا طرح موضوع:
یک ستون داده داریم که خانه اول متن، خانه دوم عدد، خانه سوم متن، خانه چهام عدد و به همین ترتیب یک در میان تکرار شده اند؛ همچنین در این ستون هر خانه ای که مقدار عددی دارد مقدارش مربوط به خانه بالاییش می باشد یعنی مقدار عددی خانه دوم مربوط به مقدار متنی خانه اول و مقدار عددی خانه چهارم مربوط به مقدار متنی خانه سوم می باشد.
طرح سوال :
چگونه می توان مقدار عددی ای که متعلق به یک خانه متنی می باشد را روبروی آن خانه متنی قرارداد تا در پایین آن خانه متنی نباشد؛
و یا به عبارت دقیق تر
چگونه می توان دو ستون داشت که در ستون اول فقط مقادیر متنی و در ستون دوم فقط مقادیر عددی مربوط به آنها قرار گرفته باشد.
ممنون از وقتی که می گذارید.
درود
میتونید با توابع istext, isnumber مشخص کنید جنس داده ها رو و بعد فیلتر کنید و کات کنید و جابجا کنید
سلام وقتتون بخیر ممنون میشم راهنماییم کنید
دریک شیت یک جدول اطلاعات محصول دارم که حدود۲۰محصول معرفی شده یکی از ستون ها محل وارد کردن تعداد سفارش هست چطور میتونم درجدول جداگانه ای در شیت دوم فقط محصولاتی که عدد سفارش بهش وارد شده دریک جدول انتقال بدم د واقع مثلا از۲۰محصول ۳ محصول انتخاب شده و عدد داده شده میخوام درشیت دوم این محصولات و تعدادشون درجدول کوچک۳تایی نمایش داده بشن ممنون
درود
هم میتونید از پیوت استفاده کنید و داده هایی که مقدار دارن رو نمایش بدید
هم فمرول نویسی (جستجوی موارد تکراری) که شرط شما اینجا ر بودن سلول سفارش هست
سلام
برای کد نویسی شمارش سلول پر در textbox در محیط vba چگونه باید نوشته شود؟
ممنون
سلام
کافیه خصوصیت text کنترل textbox رو مساوی تابع Counta محدوده مورد نظر بذارید.
سلام به شما
در هنگام فرمول نویسی وقتی یک سل را انتخاب میکنم مثلا G6، به جای G6 عبارت [@Column6] در فرمول میزنه
البته فرمول درست کار میکنهچطور میتونم به حالت اول برگردونم و فقط G6 رو برام بزنه؟
سلام وقت بخیر
من یک فرمول دارم . می خوام یک سری داده به ورودی اون بدم و خروجی بگیرم اما نه دونه دونه بلکه می خوام یک ستون عدد را بهش ارجاع بدم و یک ستون جلوش جواب بگیرم چه طوری می تونم این دو تا ستون رو به فرمول ام ربط بدم ؟
ممنون
درود
نیازی نیست دونه دونه فرمول بدید
همین مقاله اصول فمرول نویس یور خبونید هر ۴ قسمت رو تا ببینید چطور یک فمرول رو تعمیمی میدیم به بقیه سل ها