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





با سلام و احترام؛
ضمن تشکر از سایت بسیار زیبا و کاربردیتون و حوصله ای که برای پاسخ به سوالات به خرج می دید.
یه سوال داشتم اینکه اگر در یک جدول چندین اسم داشته باشیم و در تاریخهای متفاوت پرداخت آنها ثبت گردد در صورتی که بخواهیم از طریق لیست گزارش آخرین پرداختی نفر رو ببینیم باید چه بکنیم به عنوان مثال آخرین پرداختی علی در چه تاریخ و چه مقدار بوده است؟
نام تاریخ واریز مبلغ انتخاب علی / نمایش آخرین مبلغ پرداختی /
نام تاریخ واریز مبلغ
علی ۹۹/۰۱/۰۱ ۱۰۰,۰۰۰
محمد ۹۹/۰۱/۰۲ ۲۰۰,۰۰۰
تقی ۹۹/۰۱/۰۳ ۳۰۰,۰۰۰
علی ۹۹/۰۱/۰۴ ۴۰۰,۰۰۰
محمد ۹۹/۰۱/۰۵ ۵۰۰,۰۰۰
تقی ۹۹/۰۱/۰۶ ۶۰۰,۰۰۰
علی ۹۹/۰۱/۰۷ ۷۰۰,۰۰۰
علی ۹۹/۰۱/۰۸ ۸۰۰,۰۰۰
محمد ۹۹/۰۱/۰۹ ۹۰۰,۰۰۰
درود بر شما
با توجه به اینکه تاریخ شمسی هست و به نظر میرسه که فرمت متنی داره، اول / ها رو حذف کنید که مقادیر تاریخ تبدیل به عدد بشه مثلا، ۹۹۰۱۱۱، بعد با تابع MAxif یا Dmax و ترکیب با سایر توابع متنی میتونید ماکزیمم شرطی (بیشترین مقدار تاریخ بشرطی که علی باشه) رو حساب کنید
با سلام و احترام؛
تشکر بابت پاسخ شما و زمانی که گذاشتید.موفق باشید.
با سلام
برنامه ای را نوشته ام و از فرمول استفاده کرده ام و داده ای را برای سال ۹۸ در سل A1 قرار داده ام و با دستور =A5 آن را به در سل A5 انتقال داده ام. اگر اطلاعات سال ۹۹ بیاید سل A5 که اطلاعات سال ۹۸ را دارد به سال ۹۹ تغییر می کند خواهشمند است راهنمایی فرمایید اطلاعات سال ۹۸ را چگونه ثابت کنم که وقتی اطلاعات سال ۹۹ می آید آن سل A5 تغییر نکند. A5 برای حدود ۵۰۰ شیت است. ممنون از راهنمایتون. ارادتمند سجادی
درود
فرمول رو باید از بین ببرید
میتونید paste value کنید که تغییر نکنه
سلام
آیا امکان داره با بنده همکاری داشته باشید و روی یک سری دیتا کار کنید؟
درود
به info@excelpedia.net ایمیل بزنید و شرح پروژه رو کامل بفرمایید
سلام وقت بخیر
بعد از ثبت عملیات فرمول نویسی در اکسل حتما باید اینتر زد وگرنه فرمول درست کار نمیکنه مشکل کجاست؟
سلام
تا از سلول بیرون نیاید که فرمول کار نمیکنه پس اینتر لازمه.
اگر منظورتون اینه صفحه باید رفرش بشه تا نتیجه فرمول تغییر کنه، محاسبات در حالت دستی قرار گرفته از تب Formula رو ی اتوماتیک قرار بدید
ممنون از شما مشکل حل شد با راهنمایی مفید شما
سلام
ممنون از حوصله ای که بخرج میدید و جواب بقیه رو میدید
میخواستم ببینم چطور میتونم اعدادی که بین دو سطر مخصوص از شیت اکسلم هستن رو با هم جمع کنم؟
دو سطر خاصی که میخوام رو با تابع match پیدا کردم.به عنوان مثال یکیشون شده سطر ۴۳ و یکیشون شده سطر ۸۰. حالا میخوام تمام اعداد مثلا ستون A رو که از سطر ۴۳ شروع میشن و به سطر ۸۰ میرسن رو باهم جمع کنه ( اعداد ۴۳ و ۸۰ متغیرن و با تغییر پارامتری که کاربر میزنه تابع match میگرده و اعداد دیگه ای رو پیدا میکنه )
درود بر شما
هم با تابع address میشه و هم تابع offset
تابع match رو در adress میتونید قرار بدید و محدوده رو بسازید و بعد با indirect جمع رو حساب کنید
https://excelpedia.net/address-function/
ممنونم از پاسخی ک دادید
امکانش هست لطف کنید و نمونه ای که match رو داخل address بذاریم و. Indirectرو داخل sum قرار بدیم رو بنویسید؟
مقالاتی که ارائه شده رو مطالعه کنید و سع یکنید انجام بدید.
همه توابع مورد نیاز با مثال در سایت اموزش داده شدند
یه دنیا ممنون ازینکه لقمه رو داخل دهان نذاشتید و یکی از لذت بخش ترین فرمولهایی بود ک بعد از مطالعه ی کامل مقاله و کلنجار با فرمول نوشتم ?
سلام..وقت بخیر
من میخوام تو اکسل هشتا هشتا مقدار ردیف ها رو جمع کنم…مثلا در سلول اول جمع ردیف های ۲ تا ۹ باشه و در سلول پایینش جمع ردیفهای ۱۰ تا ۱۷ و بعدی ۱۸ تا ۲۵….بطور معمول وقتی سلول اول رو جمع ردیف های ۲ تا ۹ میزارم سلول بعدی میشه جمع ردیف ۳ تا ۱۰و به همین ترتیب تا انتها پیش میره….ولی من میخوام جمع هشت سلول بعد مشخص بشه…کاری میشه کرد؟؟
درود
میتونید محدوده ها رو با address بسازید. از مقاله زیر کمک بگیرید
https://excelpedia.net/address-function/
یا اینکه تابع offset
مهم تعیین رابطه ریاضی هست . اینکه با هر ردیف درگ کردن، عدد چندتا چندتا تغییر کنه
سلام خسته نباشید
میخواستم یه سوال بپرسم خدمتتون
از چه فرمولی میتونیم استفاده کنم
یک ستون A دارم که داده داره و میخوام ستونی B را نسبت به داده ستون A اطلاعات پر بشه
درود
بستگی به جزئیات داره. یعنی چی نسبت به ستون A
اما اول تایع vlookup رو چک کنید ببینید جواب نیازتون و میده
اگه نداد توضیح بیشتر بدید
سلام
من یک TABLE ساختم که سطرها و ستون های مختلفی داره و مدام بهش رکوردهای جدید اضافه میشه
در زیر جدول هم چند سلول هم ردیف رو merge کردم و داخلش متنی نوشتم که تعداد ردیف های جدول رو ثبت میکنه و توضیحات دیگری اضافه میکنه
آیا تابع یا فرمولی هست که این سطر همواره بصورت پویا فاصله خودش با جدول رو حفظ کنه؟ یعنی نه به جدول بچسبه و نه فاصله ش افزایش پیدا کنه
درود
خیر
بهتره از total که مخصوص table هست استفاده کنید
بقیه توضیحات رو هم جای دیگه ای اضافه کنید
با عرض سلام و احترام .
یک تیبل دارم که روزهای یک سال در اون ثبت شده و در مقابلش ۲۰ ستون با سر ستونهای متفاوت که یکی از این ستونها مربوط به جمع هست . در ضمن هیچ تغییر فرمتی هم در جدول ایجاد نشده ، مثلا تاریخ به شکل ۱۳۹۹۰۱۱۲ ثبت شده . فرمولهای داخل جدول کاملا درست عمل میکنه، اما بالای هر ستون خارج از تیبل از تابع subtotal استفاده کردم که هنگام فیلتر کردن اطلاعات لازم رو ببینم . اما subtotal درست کار نمیکنه . یعنی وقتی یه عدد جدید وارد میشه subtotal اعمال نمیشه تا وقتی که در هر جای این فایل اکسل حتی در شیتهای دیگه که هیچ ربطی بهم ندارن یک عملیاتی انجام بشه !!!!یه نکته هم بگم اینه که همین کار رو در جداول کوچکتر انجام دادم و بدون مشکل کار میکنه . لطفا راهنمایی بفرمایید. با تشکر
درود
به نظر میرسه محاسبات در حالت دستی یا manual قررا داره
از تب formula گزینه calculation گزینه automatic انتخاب کنید
سلام
من یکسری دیتا ست جهت داده کاوی دارم که داده ها در هر سطر با کاما از هم جدا شدند. میخواستم این داده ها رو به ستون های جدا ببرم. راهی در نظر دارید؟؟
درود
این دو مقاله رو مطالعه کنید
https://excelpedia.net/flash-fill/
https://excelpedia.net/text-to-columns/