سبد خرید
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 را سطر به سطر تا ردیف n ام محاسبه کنه و در نهایت همه رو با هم جمع کنه.و می خوام همه در یک سلول خلاصه باشه .
    میشه راهنماییم کنید.
    با تشکر

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

      درود
      تابع sumproduct دقیقا این کار و انجام میده

  • سعید ۲۳ تیر ۱۳۹۹ / ۳:۵۷ ب٫ظ

    سلام
    وقت بخیر
    قصد دارم تو vba اطلاعات یک ستون مشخص از یک فایل اکسلی که بسته هست و تو مسیر مشخصی ذخیره شده رو فرخوانی کنم منتها کدهایی که نوشتم به نتیجه نرسیدن.
    لطفا راهنمایی

  • sina ۱۸ تیر ۱۳۹۹ / ۱۱:۰۷ ق٫ظ

    سلام اگر بخواهیم فرمول( SUM(G2:G5 رو در یک ستون تعمیم بدهیم بطوریکه G ثابت و بجای افزایش یکی یکی خونه ها مثلا چهارتا تا چهار اضافه شود چکار کنیم
    مثلا ( SUM(G2:G5
    بعدی ( SUM(G6:G9
    بعدی ( SUM(G10:G14
    الی اخر

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

      درود
      یک راه اینه که از تابع address استفاده کنید و الگو رو دربیارید
      یکی هم اینکه از offset استفاده کنید و همون الگو رو در تابع offset بدید

  • مژگان ۵ تیر ۱۳۹۹ / ۹:۲۷ ق٫ظ

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

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

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

  • شاهین ۱ تیر ۱۳۹۹ / ۹:۳۵ ق٫ظ

    سلام ، تابعی نیاز دارم که من نشون بده بطور مثال ( من در چندین سلول شماره ۱۰۱ دارم ( که یک کد برای من است ) و در در سلول روبه روی هر کدام از ۱۰۱ های من یک کلمه نوشته شده ( مثلا پاک کن ، مداد ، سرکن )
    حال میخواهم با تابعی کار کنم مثل Vlookup که به آن بگم : مثال ( هرچی ۱۰۱ در ستون AتاB است را از ستون دوم آن را بخوان و هرچی جلوی ۱۰۱ است به من نمایش بده )

  • مریم ۲۲ خرداد ۱۳۹۹ / ۳:۱۶ ب٫ظ

    سلام وقت بخیر
    اگر بخواهیم به ابتدای چندین سلول در اکسل یک کلمه ی ثابت اضافه کنیم بدون اینک بخواهیم یک در ستون جدید اعمال کنیم.یعنی در همان ستونی که داریم این تغییرات اعمال شود.

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

      سلام
      اگر بخواید فقط در ظاهر به ابتدای محتویات سلول متنی رو اضافه کنید:
      باید سلول ها رو انتخاب کنید و در بخش Custom از منو Number در Format Cell عبارت زیر رو به عنوان فرمت تایپ کنید:
      “عبارت دلخواه” @
      توجه کنید که اینکه عبارت دلخواه سمت چپ یا راست @ باشه جای اون رو مشخص میکنه که اول جمله باشه یا آخرش ( Right to Left بودن محتویات سلول هم فراموش نشود)
      این روش صرفا برای پرینت گرفتن و نمایش استفاده میشه و روی اون نمیشه فرمول های متنی بزنید.
      اگر بخواید عبارت دلخواه حتما در محتویات سلول هم قرار داده بشه میتونید در یک ستون جداگانه با استفاده از توابع Concatenate یا عملگر & متن دلخواه رو به محتویات سلول اضافه کنید و نهایتا نتیجه آن رو کپی و به صورت Paste as Value روی داده اولی پیست کنید.

  • مائده ۱۳ خرداد ۱۳۹۹ / ۹:۱۶ ق٫ظ

    من یه فایل اکسل دارم میخوام بهش دستور بدم هر موقع این شماره دانشجویی رو میبینی روی عکسشو بیار .تمامی عکس های دانشجو به شماره دانشجویی انها ذخیره شده باید چیکار کنم؟

  • میلاد ۲۷ اردیبهشت ۱۳۹۹ / ۱۱:۳۳ ق٫ظ

    من یک فایل اکسل دارم با حدود ۱۸۰۰۰ ردیف.اسامی افراد-تجهیزات به نام افراد-شماره اموال این تجهیزات و…موجود می باشد.میخواهم در شیت جدید با وارد کردن نام طرف تمام تجهیزات به نام شخص و شماره اموال و… در ستونهای مجزا نمایش داده شود.لطفا راهنمایی کنید .

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

      درود
      بهترین راه استفاده از پیوت تیبل هست

      • milad yavari ۲۸ اردیبهشت ۱۳۹۹ / ۹:۵۰ ق٫ظ

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

  • مژگان ۲۰ اردیبهشت ۱۳۹۹ / ۵:۱۰ ب٫ظ

    سلام .کی باید تو فرمول ها عدد رامطلق کرد .تو رشته مهندسی صنایع برای مدل های پیش بینی ,آلفا رو مطلق میکنند .من نمیدونم کی باید تو فرمول نویسی عدد رو مطلق کنم و چرا

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

      درود
      این مقاله راجع به همین صحبت کرده
      وقت یمیخواید فرمول رو درگ کنید و بخش هایی باید ثابت بمونن ، باید مطلق کنید

  • اسیه ۱۶ اردیبهشت ۱۳۹۹ / ۴:۰۰ ب٫ظ

    سلام.

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

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

      درود
      برای کار با داده های فیلتر شده، از توابع Subtotal, aggregate میتونید استفاده کنید

ارسال دیدگاه

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

توسط
تومان