سبد خرید
0

محصولی در سبد خرید نیست.

بازگشت به فروشگاه

قواعد فرمول نویسی حرفه ای در اکسل | قسمت دوم

آدرس دهی
۴.۳/۵ - (۴۱ امتیاز)

چرا آدرس دهی بسیار مهم است؟

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

کلیدواژه : مقدماتی
آواتار
145

فارغ التحصیل لیسانس مهندسی صنایع، ارشد مدیریت صنعتی از دانشگاه تربیت مدرس و عاشق اکسل هستم. از سال 1388 که ترم 2 لیسانس بودم، به توصیه استاد مشاورم شروع به خوندن اکسل بصورت حرفه ای کردم و همچنان در حال مطالعه و یادگیری و البته آموزش به بقیه هستم.

دیدگاه کاربران
  • رضا ۱۱ فروردین ۱۳۹۹ / ۴:۳۸ ب٫ظ

    با سلام
    وقت بخیر و خسته نباشید
    یک شیت داریم که از ۵ ستون تشکیل شده ۲ ستون اخر حاوی فرمول هستش (بارکد کالا – نام کالا – تعداد رسید شده – تعداد دریافتی – “مغایرت “)، ستون آخر جواب نهایی هست بعضی از سلولهای این ستون ،حالا به هر دلیلی به این شکل میشه #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 را بنویس، درغیراینصورت به سلول پایینی برو
    در اکسل چنین دستوری امکان پذیر؟

    • سامان چراغی ۱۲ اسفند ۱۳۹۸ / ۱۱:۵۰ ق٫ظ

      سلام
      از فرمول زیر استفاده کنید:

      =IF(B1="",A1,B2)
      
      • فاز ۱۲ اسفند ۱۳۹۸ / ۱۲:۳۶ ب٫ظ

        دستورتون اجرا میکنم اما ارور میده

        • سامان چراغی ۱۲ اسفند ۱۳۹۸ / ۱:۵۵ ب٫ظ

          فرمول مشکلی نداره، ممکنه جدا کننده آرگومان های توابع شما به جای , باید ; باشه. به این مورد توجه کنید.

  • آواتار
    esmaeel ۱۰ اسفند ۱۳۹۸ / ۹:۴۶ ق٫ظ

    سلام کد ماکرویی میخوام که بازدن ثبت خودبه خود درسطر اول دیتا کپی بشه ودوباره در سطر دوم همینطور ادامه بده

  • محمد ۷ اسفند ۱۳۹۸ / ۱۱:۰۳ ق٫ظ

    سلام
    وقت بخیر
    قصد دارم سلولهای خالی یک ستون اکسل ررو بر اساس ستون دیگری پر کنم.
    ممنون میشم راهنمایی کنید
    ئر فرمول نویسی در اکسل چگونه و با چه سیمبلی به خانه خالی اشاره میکنیم؟

    • آواتار
      حسنا خاکزاد ۸ اسفند ۱۳۹۸ / ۱۲:۰۳ ب٫ظ

      درود
      تابع isblank خالی بودن یک سلول رو چک میکنه

  • ندرلو ۴ اسفند ۱۳۹۸ / ۱۲:۳۶ ب٫ظ

    سلام و عرض ادب
    سوالی داشتم:
    لطف میکنید بفرمایید چطور میتونم فرمت یه سلول و به سلول دیگری وابسته کنم برای مثال وقتی در اثر فرمولی در سلول اول فرمت رنگ و فونت سلول تغییر کند به طبع آن فرمت رنگ و فونت سلول دوم نیز تغییر کند؟
    با سپاس

    • سامان چراغی ۵ اسفند ۱۳۹۸ / ۴:۱۴ ب٫ظ

      درود بر شما
      از طریق conditional formatting
      با منطق logical فرمول نویسی کنید

  • میثم ۳ اسفند ۱۳۹۸ / ۹:۰۴ ق٫ظ

    با عرض سلام . داخل یک شیت یک جدولی دارم با ستونهای مختلف و تعداد سطرها هم به تعداد روزهای سال یک چیزی شبیه به شکل زیر :
    تاریخ فروش
    ۱۳۹۸/۰۵/۰۱
    ۱۳۹۸/۰۵/۰۲
    ۱۳۹۸/۰۵/۰۴
    و الی آخر . . . داخل یک شیت دیگه یک جدول دیگه داریم که باید یه سری مجموعها رو اعلام کنه به این صورت که اگه عدد ۵ رو وارد کنم به ترتیب روزهای پنجم هر ماه رو نمایش میده ، مثل :
    ۱۳۹۸/۰۱/۰۵
    ۱۳۹۸/۰۲/۰۵
    ۱۳۹۸/۰۳/۰۵
    ۱۳۹۸/۰۴/۰۵
    و الی ۱۳۹۸/۱۲/۰۵ حالا سوال من این هست که آیا راهی وجود داره با وارد کردن یک عدد و مشخص شدن تاریخ مورد نظر مجموع فروش اون ماه تا اون تاریخ ثبت شده رو بهم بده یعنی با وارد کردن عدد ۵ ، فروش پنج روز اول هر ماه رو بده یا با کردن عدد ۲۰ ، فروش ۲۰ روز اول هر ماه رو بده ؟؟؟؟ سوالم خیلی طولانی شد . با نهایت شرمندگی و تشکر از راهنمایی شما

    • سامان چراغی ۳ اسفند ۱۳۹۸ / ۱۲:۰۲ ب٫ظ

      درود
      خیلی بستگی به ساختار تاریخ شما داره
      اینکه تاریخ جنس عددی داره یا متنی هست
      از تاریخ سیستم پیروی میکنه یا دستی تایپ شده و …

      به هر حال، با توجه به هر حالت باید نکات مربوط به خودش رو در نظر بگیرید. البته اینها در صورتیه که تاریخ تکراری داشته باشید
      اگر برای هر روز فقط یک تاریخ دارید، مثلا عدد ۵ نشون دهنده اینه که ۵ سلول فقط باید جمع زده بشن، میتونید از تابع offset استفاده کنید و پنج تا رو مشخص کنید

      اگر تکراری دارید اون بحث جنس داده ونوع چینش داده باید بررسی بشه و جزئیات دیگه

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

توسط
تومان