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

شکل 1. تعیین اینکه چگونه جمع های فرعی باید ایجاد شوند.
- تب Data روبان را نمایش دهید.
- در گروه Outline بر روی ابزار Subtotal کلیک کنید. اکسل کادر محاوره ای Subtotal را نمایش می دهد. (شکل 1 را ببینید.)
- مطمئن شوید که لیست کشویی At Every Change In روی Vendor تنظیم شده است. (از نام ستون C استفاده کنید.) این نشان می دهد که اکسل در کجا جمع های فرعی را وارد می کند.
- لیست کشویی Use Function باید روی Count تنظیم شود.
- با استفاده از لیست موجود در کادر Add Subtotal To، ستون Vendor (ستون C) را انتخاب کنید. این جایی است که تعداد اضافه خواهد شد.
- اطمینان حاصل کنید که چک باکس Replace Current Subtotals انتخاب شده باشد.
- مطمئن شوید که چک باکس Page Breaks between Groups انتخاب شده باشد.
- مطمئن شوید که چک باکس Summary Below Data انتخاب شده باشد.
- روی OK کلیک کنید.
اکسل جمعهای فرعی را در کاربرگ شما قرار میدهد، اما باید قبل از هر فروشنده جدید، شکستگیهای صفحه را نیز قرار دهد. (این به دلیل مرحله 7، بالا است.) شکستگی های صفحه ممکن است فوراً مشخص نباشند، اما زمانی که کاربرگ را چاپ می کنید به کار می روند.
پس از چاپ، چیزی که در نهایت به آن می رسید یک صفحه چاپ شده برای هر یک از فروشندگان شما است. مجموع فرعی درست زیر آخرین ردیف در هر صفحه تعداد سفارش های خرید چاپ شده برای آن فروشنده خاص را نشان می دهد.
استفاده از داده های فیلتر شده
فیلتر کردن دادههای شما بسیار آسان است، و اگر نیازی به چاپ این نوع گزارشها ندارید، این روش خوبی است. باز هم، با انتخاب سلولی در دادههای خود شروع کنید، مگر اینکه دادههای شما به هم پیوسته نباشند. (در این صورت باید تمام داده های خود را به صورت دستی انتخاب کنید.) سپس این مراحل را دنبال کنید:
- تب Data روبان را نمایش دهید.
- روی ابزار Filter در گروه Sort & Filter کلیک کنید. اکسل باید نشانگرهای کشویی AutoFilter را در کنار هر برچسب ستون در ردیف 1 نمایش دهد.
- با استفاده از نشانگر کشویی ستون Vendor (ستون C)، نام فروشنده ای را که می خواهید چاپ کنید انتخاب کنید. لیست شما به طور خودکار فیلتر می شود تا فقط سفارشات خرید از آن فروشنده را نمایش دهد.
- صفحه را همانطور که معمولاً چاپ می کنید چاپ کنید. گزارش چاپ شده باید فقط سفارشات خرید را برای فروشنده ای که در مرحله 3 مشخص کرده اید نشان دهد.
اگر میخواهید گزارشهایی را برای فروشندگان دیگر چاپ کنید، تنها کاری که باید انجام دهید این است که فیلتر را تغییر دهید (مرحله 3) و دوباره چاپ کنید (مرحله 4). وقتی کارتان تمام شد، میتوانید با کلیک مجدد روی ابزار Filter در زبانه Data روبان، فیلتر را حذف کنید.
استفاده از PivotTables
یکی دیگر از راههای سریع برای ایجاد گزارشهایی که میخواهید، استفاده از قابلیتهای PivotTable اکسل است. من در اینجا به نحوه ایجاد یک PivotTable نمی پردازم، زیرا در شماره های دیگر ExcelTips به آن پرداخته شده است . PivotTable شما می تواند تقریباً به هر شکلی که می خواهید تنظیم شود، اما باید مطمئن شوید که فیلد Vendor در گروه Filters در قسمت PivotTable Fields قرار دارد. (شکل 2 را ببینید.)

شکل 2. تنظیم PivotTable خود.
سپس، بسته به نسخه اکسل خود، تب Options یا Analyze روبان را نمایش دهید. (این برگه ها فقط زمانی قابل مشاهده هستند که سلولی را در PivotTable خود انتخاب کنید.) در گروه PivotTable، در سمت چپ نوار، روی لیست کشویی گزینه ها کلیک کنید و نمایش گزارش فیلتر صفحات را انتخاب کنید. (این گزینه فقط در صورتی در دسترس است که همانطور که قبلاً ذکر شد، قسمت Vendor در گروه فیلترها قرار دارد.) Excel کادر محاوره ای Show Report Filter Pages را نمایش می دهد. (شکل 3 را ببینید.)

شکل 3. کادر محاوره ای Show Report Filter Pages.
فقط باید یک فیلد در کادر محاوره ای لیست شده باشد، مگر اینکه بیشتر از فیلد فروشنده به گروه فیلترها اضافه کرده باشید. اگر بیش از یک فیلد در لیست وجود دارد، مطمئن شوید که روی فیلد فروشنده کلیک کرده اید. وقتی روی OK کلیک می کنید، اکسل برگه های PivotTable جداگانه برای هر فروشنده در جدول داده های شما ایجاد می کند. بسته به اطلاعاتی که انتخاب کردهاید در PivotTable قرار دهید، این اطلاعات میتوانند گزارشهای خوبی برای فروشندگان شما ایجاد کنند. سپس می توانید برگه ها را چاپ کنید تا گزارش های مورد نظر خود را دریافت کنید.
استفاده از ماکروها
راههای زیادی وجود دارد که میتوانید یک ماکرو راهاندازی کنید تا دادههای مورد نظرتان را در اختیارتان قرار دهد. من شخصاً یک ماکرو را ترجیح می دهم که از داده های شما عبور کند و کاربرگ های جدیدی برای هر فروشنده ایجاد کند. این کاری است که ماکرو زیر انجام می دهد - لیستی از فروشندگان را از داده های شما جمع آوری می کند و سپس یک کاربرگ به نام هر فروشنده ایجاد می کند. سپس اطلاعات را از کاربرگ اصلی به کاربرگ های تازه ایجاد شده کپی می کند.
Sub CreateVendorSheets()
To use this macro, select the first cell in
the column that contains the vendor names.
Dim sTemp As String
Dim sVendors(99) As String
Dim iVendorCounts(99) As Integer
Dim iVendors As Integer
Dim rVendorRange As Range
Dim c As Range
Dim J As Integer
Dim bFound As Boolean
Find last row in the worksheet
Set rVendorRange = ActiveSheet.Range(Selection, _
ActiveSheet.Cells(Selection.SpecialCells(xlCellTypeLastCell).Row, _
Selection.Column))
Collecting all the vendor names in use
iVendors = 0
For Each c In rVendorRange
bFound = False
sTemp = Trim(c)
If sTemp > "" Then
For J = 1 To iVendors
If sTemp = sVendors(J) Then bFound = True
Next J
If Not bFound Then
iVendors = iVendors + 1
sVendors(iVendors) = sTemp
iVendorCounts(iVendors) = 0
End If
End If
Next c
Create worksheets
For J = 1 To iVendors
Worksheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = sVendors(J)
Next J
Start copying information
Application.ScreenUpdating = False
For Each c In rVendorRange
sTemp = Trim(c)
If sTemp > "" Then
For J = 1 To iVendors
If sTemp = sVendors(J) Then
iVendorCounts(J) = iVendorCounts(J) + 1
c.EntireRow.Copy Sheets(sVendors(J)). _
Cells(iVendorCounts(J), 1)
End If
Next J
End If
Next c
Application.ScreenUpdating = True
End Sub
همانطور که در ابتدای ماکرو ذکر شد، قبل از اجرای ماکرو باید اولین سلول داده در ستون Vendor را انتخاب کنید. پس از تکمیل، یک کاربرگ برای هر فروشنده خواهید داشت که می توانید آن را به دلخواه قالب بندی و چاپ کنید. (شما می توانید با افزودن کدی که اطلاعات سرفصل ستون یا سایر اطلاعات را در هر کاربرگ ایجاد شده قرار می دهد، ماکرو را حتی مفیدتر کنید.) پس از اتمام، باید کاربرگ های آن فروشندگان را حذف کنید تا دفعه بعد که ماکرو را اجرا می کنید، آن را اجرا نکنید. به مشکل بر بخورد