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

دیدگاه کاربران
  • محمدرضا ۱۸ آذر ۱۳۹۸ / ۴:۱۷ ب٫ظ

    سلام
    با تشکر شما برای مطالب مفید و کاربردی سایت.

    سوال:
    چطور میشه در یک ستون دارای تعداد نامشخصی داده عددی و متنی به آخرین داده عددی غیر صفر آدرس دهی کرد. البته روزانه به این داده ها افزوده میشه و میخوام با اضافه شدن داده جدید نیاز به تغییر آدرس نباشه

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

      درود
      اول باید مکان اون آخرین سلول عددی پیدا بشه. اینو با فرمول آرایه زیر پیدا میکنیم.

      =max(if(A1:A100<>0,row(A1:A100),""))
      

      نتیجه فرمول میشه شماره ردیف سلول مورد نظر، بعد این شماه ردیف رو داخل تابع address قرار میدیم:

      https://excelpedia.net/address-function/

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

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

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

          درود بر شما
          اونجا توضیح دادم که فرمول آرایه ای هست
          یعنی باید با ctrl+shift+enter ثبت بشه

  • مسعود پایدارفر ۱۳ آذر ۱۳۹۸ / ۱۰:۱۱ ق٫ظ

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

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

      درود بر شما
      سوال ی مقدار گنگه اما شاید تابع vlookup به کارتون بیاد
      سرچ کنید داخل سایت پیدا میکنید مقالش رو

  • احمد ۵ آذر ۱۳۹۸ / ۸:۴۶ ب٫ظ

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

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

      سلام
      قبل از زدن Enter اول سلول هایی که مورد نظر هست انتخاب کنید و بعد Enter بزنید.

      • احمد ۶ آذر ۱۳۹۸ / ۱۲:۵۴ ب٫ظ

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

        • سامان چراغی ۷ آذر ۱۳۹۸ / ۸:۳۹ ق٫ظ

          میتونید سلول های دیگه رو Protect کنید و در ادامه شیت رو هم Protect (به صورتیکه فقط سلول های Unprotect قابل انتخاب باشه) کنید.

  • امير ۵ آذر ۱۳۹۸ / ۸:۵۳ ق٫ظ

    سلام
    من در یک فایل اکسل ۳ صفحه دارم که اسم صفحه اول ۹۶ و اسم صفحه دوم ۹۷ هستش و میخواستم در صفحه سوم اگه بالای صفحه عدد ۹۶ رو زدم اطلاعات صفحه ۹۶ رو برام بیاره و اگه عدد ۹۷ رو زدم اطلاعات صفحه ۹۷ رو برام بیاره. لطفا راهنمایی کنید چطری میتونم این کار رو انجام بدم. ممنون

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

      درود بر شما
      اینکه اطلاعات رو بیاره، بستگی به ساختار داره، تکراری داردی یا نه، چطور چیده شده و مبنای جستجو چیه

      اما بصورت کلی برای اینکه سلول ها به شیت مرتبط باشه، یک راه استفاده از تابع address و indirect هست. این مقاله رو بخونید:
      https://excelpedia.net/address-function/

  • علی ۱۰ آبان ۱۳۹۸ / ۵:۴۹ ب٫ظ

    سلام از این مطلب مفید بسیار استفاده کردم خواستم یک تشکر ویژه از شما داشته باشم. موفق باشید

  • مجتبی ۲ آبان ۱۳۹۸ / ۱۰:۰۵ ق٫ظ

    با سلام و سپاس
    من ۶۰۰ تا نام و هر کدوک یه شماره پرسنلی دارن میخام تو یه سلول نام رو بنویسم و شماره پرسنلی بهم بده اگه میشه راهنماییم کنید
    با تشکر

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

      سلام
      برای این کار از تابع Vlookup استفاده کنید.

  • حسين ۲۳ مهر ۱۳۹۸ / ۲:۴۶ ب٫ظ

    سلام. ممنون از سایت مفیدتان. یک سوال داشتم:
    در یک ستون نام شرکتها (با تکرار)و در ستون کنارش شماره قراردادهای مختلف با آن شرکتها(یونیک هستند) را داریم. آیا بصورت انلاین و با فرمول نویسی یک مرحله ای و بدون سورت و فیلتر و … می توانیم فهرست شرکتها(بدون تکرار) را الزاما با کلیه شماره قراردادهای آن شرکتها در یک سلول کنارش بیاوریم(نمونه این فهرستها برای سازمان دارایی نیاز است)

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

      سلام،
      اگر حتما بخواید این سوال رو با فرمول نویسی حل کنید باید از فرمول نویسی آرایه ای استفاده کنید.
      اما بهترین راه حل برای این مسئله استفاده از Pivot Table هست.

  • امیرحسین ۱۱ مهر ۱۳۹۸ / ۴:۲۵ ب٫ظ

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

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

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

  • امیرحسین ۸ مهر ۱۳۹۸ / ۹:۰۷ ب٫ظ

    سلام و ممنون از آمورش عالی تون
    سوالی دارم در این زمینه
    چنانچه ۲ شیت داشته باشم، یک شیت اطلاعات کل بازار و شیت دیگر اطلاعات انتخاب شده برای محاسبه.
    اگر ستون D من در شیت ۱ اطلاعات نام محصول را از ستون A در شیت ۲ به صورت یک لیست کشویی بر دارد. چگونه می توانم اطلاعات قیمت متناظر با نام محصول در شیت ۲ را در کنار نام محصول در شیت ۱ قرار دهم.

    • آواتار
      حسنا خاکزاد ۹ مهر ۱۳۹۸ / ۱۱:۱۵ ق٫ظ

      درود بر شما
      از تابع vlookup استفاده کنید

  • حامد ۸ مهر ۱۳۹۸ / ۳:۴۰ ب٫ظ

    سلام مرسی از مطالبتون
    من میخواستم ببینم راهی هست که برای مثال
    سلول A1 رو به شیت دوم C3
    و سلول B1 رو به شیت دوم B5 انتقال بدم
    و به تونم برای ردیف ۲ام هم همین عیننا تکرار بشه؟
    مثلا لیست اسامی در شیت ۱ با درصدهاشون وارد یک شیت دیگه به صورت کارنامه ای نمایش بده؟
    ممنون از پاسخ دهی

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

      درود بر شما
      سوال خیلی واضح نیست
      ولی احتمالا توابع جستجو میتونن پاسخگو باشن

ارسال دیدگاه

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

توسط
تومان