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





با سلام
وقت بخیر و خسته نباشید
یک شیت داریم که از ۵ ستون تشکیل شده ۲ ستون اخر حاوی فرمول هستش (بارکد کالا – نام کالا – تعداد رسید شده – تعداد دریافتی – “مغایرت “)، ستون آخر جواب نهایی هست بعضی از سلولهای این ستون ،حالا به هر دلیلی به این شکل میشه #N/A ،، میخاستم بدونم چجوری میشه که بتونم اطلاعات کامل این سلول و هر سلولی که این شکلی میشه رو ،یعنی هم “بارکد کالا – نام کالا – تعداد رسید شده – تعداد دریافتی” توی یک شیت جداگانه داشته باشم ؟؟
سپاس بیکران
درود
میتونید سلول هایی که با خطا روربرو شدن رو با if شماره گذاری کنید و بعد شماره ها رو vlookup کنید در یک شیت دیگه
یا فمرول نویسی آرایه ای استفاده کنید. با این نکته که داده های تکراری شما خطای n/a هست و شرط برابر است با خطا بودن. در اینمقاله:
https://excelpedia.net/search-duplicates/
سلام
این فرمول (((IF(C4=1,B!A2,IF(C4=2,B!A3,IF(C4=3,B!A4,0= رو نوشتم و میخوام کپی اش کنم توی سطر بعدی و میخوام داده های B!A2 و B!A3 و B!A4 تغییر نکنن اما مقدار C4 متناسب با موقعیت سلول تغییر کنه لطفا راهنمایی بفرمایید.
متاسفانه وقتی این فرمول رو کپی می کنم همه مقادیر تغییر می کنن.
سوال دوم اینکه برای مقادیر IF های تو در توی بیش از ۶۴ levelچه راهکاری پیشنهاد میدین؟
درود
دقیقا در همین مقاله که کامنت گذاشتید، جواب سوالتون ارائه شده. کافیه مطالعه بفرمایید!
با علامت $ هر قسمت از فرمول رو که نیاز باشه فیکس میکنید
تابع ifs تا ۱۲۷ شرط رو پشتیبانی میکنه
سلامودر یک جدول در ستون کنار بعضی از اعداد علامت * را برای نشانه دار کردن قرار دادمو چگونه فرمولی بنویسم که سلول هایی را که سلول کناریشان * دارد را با هم جمع ببندد ؟
درود
چون * معنی دار است و جزو کاراکترهای wildcard هست
باید در هنگام جستجو، قبلش ~ بذارید
یعنی ~*
این میشه شرط تابع sumif
سلام وقت بخیر، میخوام بعد از باز کردن اکسل و بعد از وصل شدن به اینترنت اتوماتیک یک عددی رو از یه سایتی بگیره و تو یه سلول قرار بده چیکار باس کنم ؟
درود
از قسمت data from web یا power query میتونید اینکار و بکنید.
بستگی به ساختار سایت هم داره که این امکان رو بهتون بده
خیلی ممنون از جوابتون. توی این قسمت فقط جدول هارو میشه اضافه کرد، میخواستم ببینم چطوری میشه اطلاعتی ک بصورت جدول نیست رو اضافه کرد، این رو هم بگم نمیخوام فقط لینک یه صفه رو اضافه کنه، اون عددی ک توی اون صفه از سایت هرروز آپدیت میشه رو میخوام ک بصورت جدول نیس.
اون امکانی که گفتم برای همینه
در واقع فقط جداول وارد اکسل میتونن بشن
اگر جدول نیست بعید میدونم بشه
سلام روز همه دوستان بشادی
توی اکسل نیاز دارم تاریخ میلادی رو به فارسی تبدیل کنم .
ممنون میشم دستور یا فرمولش رو بفرمایید .
بااحترام
سلام
لینک تاریخ شمسی در اکسل رو مطالعه کنید.
از افزونه تقویم شمسی هم میتونید استفاده کنید.
با سلام
قصددارم فرمولی به شرح زیر بنویسم. میشه راهنماییم کنین
در صورت خالی بودن سلول b مقدار سلول a را بنویس، درغیراینصورت به سلول پایینی برو
در اکسل چنین دستوری امکان پذیر؟
سلام
از فرمول زیر استفاده کنید:
دستورتون اجرا میکنم اما ارور میده
فرمول مشکلی نداره، ممکنه جدا کننده آرگومان های توابع شما به جای , باید ; باشه. به این مورد توجه کنید.
سلام کد ماکرویی میخوام که بازدن ثبت خودبه خود درسطر اول دیتا کپی بشه ودوباره در سطر دوم همینطور ادامه بده
سلام
وقت بخیر
قصد دارم سلولهای خالی یک ستون اکسل ررو بر اساس ستون دیگری پر کنم.
ممنون میشم راهنمایی کنید
ئر فرمول نویسی در اکسل چگونه و با چه سیمبلی به خانه خالی اشاره میکنیم؟
درود
تابع isblank خالی بودن یک سلول رو چک میکنه
سلام و عرض ادب
سوالی داشتم:
لطف میکنید بفرمایید چطور میتونم فرمت یه سلول و به سلول دیگری وابسته کنم برای مثال وقتی در اثر فرمولی در سلول اول فرمت رنگ و فونت سلول تغییر کند به طبع آن فرمت رنگ و فونت سلول دوم نیز تغییر کند؟
با سپاس
درود بر شما
از طریق conditional formatting
با منطق logical فرمول نویسی کنید
با عرض سلام . داخل یک شیت یک جدولی دارم با ستونهای مختلف و تعداد سطرها هم به تعداد روزهای سال یک چیزی شبیه به شکل زیر :
تاریخ فروش
۱۳۹۸/۰۵/۰۱
۱۳۹۸/۰۵/۰۲
۱۳۹۸/۰۵/۰۴
و الی آخر . . . داخل یک شیت دیگه یک جدول دیگه داریم که باید یه سری مجموعها رو اعلام کنه به این صورت که اگه عدد ۵ رو وارد کنم به ترتیب روزهای پنجم هر ماه رو نمایش میده ، مثل :
۱۳۹۸/۰۱/۰۵
۱۳۹۸/۰۲/۰۵
۱۳۹۸/۰۳/۰۵
۱۳۹۸/۰۴/۰۵
و الی ۱۳۹۸/۱۲/۰۵ حالا سوال من این هست که آیا راهی وجود داره با وارد کردن یک عدد و مشخص شدن تاریخ مورد نظر مجموع فروش اون ماه تا اون تاریخ ثبت شده رو بهم بده یعنی با وارد کردن عدد ۵ ، فروش پنج روز اول هر ماه رو بده یا با کردن عدد ۲۰ ، فروش ۲۰ روز اول هر ماه رو بده ؟؟؟؟ سوالم خیلی طولانی شد . با نهایت شرمندگی و تشکر از راهنمایی شما
درود
خیلی بستگی به ساختار تاریخ شما داره
اینکه تاریخ جنس عددی داره یا متنی هست
از تاریخ سیستم پیروی میکنه یا دستی تایپ شده و …
به هر حال، با توجه به هر حالت باید نکات مربوط به خودش رو در نظر بگیرید. البته اینها در صورتیه که تاریخ تکراری داشته باشید
اگر برای هر روز فقط یک تاریخ دارید، مثلا عدد ۵ نشون دهنده اینه که ۵ سلول فقط باید جمع زده بشن، میتونید از تابع offset استفاده کنید و پنج تا رو مشخص کنید
اگر تکراری دارید اون بحث جنس داده ونوع چینش داده باید بررسی بشه و جزئیات دیگه