سبد خرید
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 لیسانس بودم، به توصیه استاد مشاورم شروع به خوندن اکسل بصورت حرفه ای کردم و همچنان در حال مطالعه و یادگیری و البته آموزش به بقیه هستم.

دیدگاه کاربران
  • رضا ۲۸ مرداد ۱۴۰۲ / ۵:۰۰ ب٫ظ

    سلام
    ممنونم از آموزشتون
    من میخوام در صورتی که ستون A عدد نداشت یا برابر صفر بود ، عملیات جمع و تقسیم در ستون B برابر با صفر بشه
    مثلا اگه A1= 0 بود آنگاه B1=(F1/2/C1)+(F1/2/C2)*A1 مساوی با صفر بشه .
    میدونم اگه فرمول بصورت B1=((F1/2/C1)+(F1/2/C2))*A1 نوشته بشه حاصلش صفر میشه ولی چون سایر سطرهای ستون A اعدادی متفاوت دارن جمع فرمول B1=((F1/2/C1)+(F1/2/C2))*A1 اشتباه میشه .

    لطفا راهنمایی کنید .

    • آواتار
      حسنا خاکزاد ۲۸ مرداد ۱۴۰۲ / ۷:۵۴ ب٫ظ

      درود
      متوجه نشدم
      در صورتی که A1 صفر باشه میخواید صفر بشه که این فمرول میشه چون ۰ رو داره در اون پرانتز ضرب میکنه
      اگر ۰ نباشه میخواید چی حساب کنه اونو توضیح بدید که به قول شما اشتباه نشه

      • رضا ۲۹ مرداد ۱۴۰۲ / ۵:۳۸ ب٫ظ

        F1=1000
        C1=20
        C2=50
        A1=3
        در فرمول B1=(F1/2/C1)+(F1/2/C2)*A1
        ۵۵=B1 میشه یعنی جواب میشه ۵۵
        اگه مقدار A1 رو در فرمول بالا صفر قرار بدیم یعنی A1=0 باشه درنتیجه جوابش میشه ۲۵ ( بخاطر اولویت عملگرها )
        میخوام فرمولی نوشته بشه که جوابش بشه ۰ نه ۲۵
        یعنی B1=0 بشه
        *** بدون اینکه پرانتز اول و آخر فرمول بذارم چون وقتی با A1 ضرب میشه قاعدتا جواب صفر هست ***
        یعنی ((F1/2/C1)+(F1/2/C2))*A1 جواب مساوی ۰ هست .

        • آواتار
          حسنا خاکزاد ۳۰ مرداد ۱۴۰۲ / ۹:۵۷ ب٫ظ

          =if(A1=0,0,(F1/2/C1)+(F1/2/C2)*A1)

          اینو در b1 بنویسید
          درست متوجه شدم؟

          • رضا ۳۱ مرداد ۱۴۰۲ / ۴:۰۵ ب٫ظ

            متشکرم
            ممنونم از توجه تون

            بله کاملا درسته .

        • محمد کفاش پناه ۵ خرداد ۱۴۰۴ / ۱۰:۲۸ ق٫ظ

          سلام خانم مهندس.ببخشید من یک فایل دارم می‌خوام بین دوتا تاریخ که تو فایل دیگه بروز رسانی میشه بره ستون مد نظر من رو جمع کنه و موجودی اون محصول رو بیاره توی سل درون شیت دیگه بیاره

          • آواتار
            حسنا خاکزاد ۵ خرداد ۱۴۰۴ / ۱۰:۵۷ ق٫ظ

            درود بر شما
            بستگی به جنس تاریخ داره
            اگر قابل محاسبه باشه، براحتی با تابع sumifs قابل انجامه
            https://excelpedia.net/date-difference/
            این مقاله رو بخونید

  • محمد ۲۱ مرداد ۱۴۰۲ / ۰:۵۵ ق٫ظ

    با سلام و عرض خسته نباشید
    من میخواستم یک جدول ایجاد کنم که زمانی که عددی رو وارد می‌کنم خودش اون رو داخل بازه هایی که داریم بزازه
    لطف می‌کنید راهنماییم کنید

  • سحرخیز ۱۷ مرداد ۱۴۰۲ / ۱:۵۲ ب٫ظ

    سلام من برای تهیه صورت مالی در یک ورک بوک یک شیت را مخزن اطلاعات قراردادم و یادداشتها را با استفاده از سام ایف و سام ایفز تکمیل کردم. بعد از اینکه کار تموم شد فایل را کپی کردم و از کامپیوتر خودم به یک کامپیوتر دیگه منتقل کردم- اول مشکلی نبود ولی بمحض انتخاب سلولهای دارای فرمول ، بلافاصله ارور داد و در واقع آدرس کامپیوتر اول در سلولها ذخیره شده که نمتونه پیداشون کنه و من مجبور بودم ابتدای تمام فرمولهای را ویرایش کنم و همون فرمول را در کامپیوتر جدید وارد کنم تا موضوع حل بشه.
    حالا سوالم اینه برای عدم نیاز به آدرس کامپیوتر اول در کامپیوتر بعد (موقع جابجائی فایل) راهکاری دارید؟ با سپاس

    • آواتار
      حسنا خاکزاد ۱۷ مرداد ۱۴۰۲ / ۵:۱۷ ب٫ظ

      درود بر شما
      اگر بین فایل ها ارتباط ایجاد کردید
      یا باید از اول همه رو در یک فولدر بذارید که بتونید ارتباطات رو با فرمول نویسی اصلاح کنید (با استفاده از توابع متنی میتونید مسیر ذخیره فایل جدید رو فراخوانی یکنید)
      یا اینکه در سیستم جدید، از قسمت Edit link سورس رو مجدد بهش بدید

  • علی ۳۱ فروردین ۱۴۰۲ / ۹:۴۹ ق٫ظ

    سلام وقت بخیر میخوام دو سلول رو کنار هم بنویسم
    فرض کنید دو سلول با نام های a و b دارم (داخل سلول کلمه نوشته شده عدد نیست)
    اگر کنار هم نوشته شود میشود ab حالا میخوام a برای همیشه یک متن ثابت باشد ولی b متغیر مثلا
    a5
    a888
    a9999
    حالا میخوام اگر سلول b خالی باشه، کلا سلول ترکیب این دو نیز خالی شود یعنی دیگه a خالی ننویسه کلا اون سلول خالی بشه

    • آواتار
      حسنا خاکزاد ۵ اردیبهشت ۱۴۰۲ / ۵:۰۸ ب٫ظ

      درود
      با if کنترل کنید که مثلا اگر سلول دوم خالی بود خالی بذاره اگه نه بچسبونه بهم

  • حسین ۲۶ فروردین ۱۴۰۲ / ۲:۱۸ ب٫ظ

    سلام و وقت بخیر
    خداقوت
    آیا امکان ثبت اتونامبر (یا فرموله) در سلول خاصی از شیتهای متوالی از ۱ تا n یک ورک بوک مثلاً H2، به طوری که در سلول ثابت H2 هر شیت عدد شمارگان همان شیت قرار بگیرد وجود دارد؟

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

      درود بر شما
      بله
      از تابع sheet استفاده کنید. هیچ ورودی هم نمیخواد
      فقط کافیه همه شیت ها رو انتخاب کنید و بعد در سلول H2 بنویسید: =sheet() و بعد Enter

  • مهدیه ۲۸ آذر ۱۴۰۱ / ۱۰:۱۵ ق٫ظ

    سلام و روز بخیر
    ضمن تشکر از پاسخگویی شما

    در تابع IF امکان تعریف نوشته به عنوان شرط وجود ندارد. من میخواهم در کل اکسل فرمولی تعریف شود که در هرسلی شروع به تایپ کردم مثلا کلمه اسکن در سل روبرو عدد ۲ ثبت گردد به طور خودکار یعنی عدد و نوشته بهم متصل باشند هر جا نوشته تایپ شد عدد در سل روبرو نوشته شود.
    با تشکر از پاسخگویی شما

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

      سلام
      روز شما هم بخیر

      برای این کار باید کد وی بی در رویداد مربوط به شیت مورد نوشته بشه.

  • مهدیه ۲۶ آذر ۱۴۰۱ / ۵:۴۷ ب٫ظ

    سلام و وقت بخیر

    من میخوام با نوشتن یک کلمه در یک سل به طور خودکار در سلی که مشخص میکنم مقدار عدد مشخصی قرار بگیرد. چطور میتونم به نتیجه برسم. آیا فرمول نویسی باید بشه؟ اگر بله، چگونه؟

    • سامان چراغی ۲۷ آذر ۱۴۰۱ / ۲:۱۸ ب٫ظ

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

  • مهدیه وفائی ۲۱ آذر ۱۴۰۱ / ۲:۲۴ ب٫ظ

    من یه فایل دارم که میخوام با تایپ نوشته در یک سل در سل دیگر مقدار خاصی به طور خودکار درج بشه. مثلا در یک سل اسکن تایپ کنم و سل بعدی عدد ۷۰ هزار درج بشه
    همچنین اگر در یک سل جمع مقادیر بیش از یک مقدار مشخص شد به جای جمع واقعی عدد اون عدد مشخص رو درج کنه و اگه کوچکتر شد جمع واقعی رو. ممنون میشم راهنمایی کنید.

    • آواتار
      حسنا خاکزاد ۲۴ دی ۱۴۰۱ / ۳:۳۵ ب٫ظ

      درود
      اول یک جدول مرجع درست کنید برای اینکه بتونه پیدا کنه که مثل اسکن معادل ۷۰۰۰۰ هست بعد با توابع جستجو مثل vlookup جستجو کنید
      مورد دوم رو هم با IF میتونید انجام بدید و کنترل کنید

  • ریحان ۶ آذر ۱۴۰۱ / ۳:۰۲ ب٫ظ

    سلام
    من میخام از یک شیت به شیتی دیگه مقادیری خاص کپی بشه
    مثلا اگر در شیت ۲؛در A2نوشتم ۵؛ مقداری ک در شیت ۱ در B2 در مقابل ۵ نوشته شده؛ در B2 شیت۲ ظاهر بشه

    • آواتار
      حسنا خاکزاد ۱۵ آذر ۱۴۰۱ / ۲:۲۰ ب٫ظ

      درود بر شما
      به نظر میرسه با vlookup راحت به ج میرسید

  • یحیی شکرزاده ۹ آبان ۱۴۰۱ / ۱۰:۵۴ ق٫ظ

    باسلام
    من در ایکسل یه فایلی ایجاد کردم که دارای چندین ستون هست که ردیفهای ۴۰ تایی میباشند میخوام وقتی که تو ردیفهارو تایپ میکنم وقتی به آخرین ردیف از آن ستون رسید اتومات به ستون بعدی ردیف اول بره و ادامه تایپ رو انجام بدم.ممنون میشم راهنمایی کنین

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

      درود بر شما
      میتونید با نامگذاری محدوده ها به این خواسته برسید و موقع تایپ کردن محدوده مورد نظر رو انتخاب کنید و تایپ کنید
      فقط توی اون محدوده حرکت خواهد کرد

ارسال دیدگاه

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

توسط
تومان