ایجاد فرم ورود اطلاعات و گزارش گیری در اکسل

موضوعات : اکسل

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


نخست فایل اکسل زیر را دانلود کنید، سه شیت داریم که به ترتیب دارای نام‌های C1 و C2 و C3 (نام مشتریان) می‌باشند، در هر شیت ردیف نخست مربوط به تاریخ خرید و ستون نخست مربوط به نام کالای خریداری شده می‌باشد. هر شیت شامل مبالغ خرید محصولات مختلف در تاریخ‌های مختلف می‌باشد.

یک شیت جدید به نام Report به اکسل اضافه کنید. حال در ستون نخست به ترتیب کلمات خریدار، نام محصول، تاریخ و مبلغ خرید را وارد کنید. در ستون دوم به ترتیب این مقادیر را وارد کنید: C2 و P021 و 1399/10/14 حال در سلول B4 فرمول زیر را وارد کنید:

=INDEX(INDIRECT("" & B1 & "!1:1048576"),MATCH(B2,INDIRECT("" & B1 & "!A:A"),0),MATCH(B3,INDIRECT("" & B1 & "!1:1"),0))

نتیجه فرمول فوق عدد 1857 خواهد بود، حال به توضیح فرمول خواهیم پرداخت:

پیش از همه باید بدانید دستور INDIRECT به شما کمک می‌کند تا یک نوشته از نوع متن(text) را به یک متغیر تبدیل کنید(یعنی در اینجا در سلول B1 مقدار C2 وارد شده که از نظر مفهومی برای ما معنای نام مشتری را دارد اما از نظر اکسل فقط یک نوشته یا متن است و هیچ مفهوم دیگری ندارد). مثلا دستور INDIRECT("'" & B1 & "'!1:1048576") مشابه 'C2'!1:1048576 می‌باشد.

  • Index : از یک آرایه یک یا دوبعدی مقدار یک سلول خاص(با مشخص شدن شماره سطر و ستون) را برمی‌گرداند.
  • INDIRECT("'" & B1 & "'!1:1048576") : با توجه به توضیحات بالا از نام شیت مشخص شده در سلول B1 آرایه شامل کلیه سلول‌های آن شیت را برمی‌گرداند(1:1048576 یعنی کلیه سلول‌های شیت)
  • MATCH(B2,INDIRECT("" & B1 & "!A:A"),0) : این دستور مقدار(نام محصول) که در سلول B2قراردارد  را در ستون اول شیت جستجو کرده و شماره ردیف مربوطه را برمی‌گرداند.
  • MATCH(B3,INDIRECT("" & B1 & "!1:1"),0) : این دستور مقدار تاریخ که در سلول B3قراردارد  را در سطر اول شیت جستجو کرده و شماره ستون مربوطه را برمی‌گرداند.

دستور فرمول بالا را می‌توان به صورت زیر نیز نوشت(تنها این فرمول برای مشتری C2 و محصول P021 در تاریخ 1399/10/14 کاربرد دارد و انعطاف‌پذیر(Flexible) نیست):

=INDEX(C2!1:1048576,MATCH("P021",C2!A:A,0),MATCH("1399/10/14",C2!1:1,0))

 


فایلهای مطلب

کپی
لینک اشتراک گذاری

  • 1194
  • 0