米切尔(Mitchell)在工作表中有很多数据,这些数据代表了该公司一年中所有的http://www.formville.com/C17_free-purchase-orders.html[purchase order] s。数据在列C上排序,列C中包含供应商的名称。 Mitchell希望为每个供应商打印一个单独的页面,其中包含这些行的所有数据。他想知道是否有任何方法可以自动打印特定于供应商的纸张。

与Excel中的许多其他内容一样,您可以采用多种方法来解决此问题。我将在本文中介绍四种方法。所有这四种方法都假定您的数据是根据供应商名称列(C列)进行排序的,并且数据的每一列(名称,日期,PO号,供应商等)都具有列标题。

使用小计

要使用小计打印特定于供应商的工作表,请从数据中选择一个单元格开始。 (C列中的一个单元格将是完美的。)如果数据不连续,则可能需要手动选择所有数据;如果是连续的,那么选择单个单元格就足够了。然后,请按照下列步骤操作:

。显示功能区的“数据”选项卡。

。在“大纲”组中,单击“小计”工具。 Excel将显示“小计”对话框。 (请参见图1。)

。确保“每次更改时”下拉列表设置为“供应商”。 (使用C列的名称。)这表明Excel将在汇总中插入小计。

。使用功能下拉列表应设置为计数。

。使用“添加到总计”框中的列表,选择“供应商(C列)”列。这是要添加计数的位置。

。确保已选中“替换当前小计”复选框。

。确保选中“在组之间分页”复选框。

。确保选中“数据下方的摘要”复选框。

。单击确定。

Excel将小计放置在工作表中,但也应在每个新供应商之前放置分页符。 (这是由于上面的步骤7所致。)分页符可能不会立即显现出来,但是在您打印工作表时它们就会起作用。

完成打印后,最终得到的是每个供应商的打印页面。每页最后一行下方的小计表明为该特定供应商打印的采购订单数。

使用过滤数据

过滤数据非常容易,如果您不需要经常打印这些类型的报告,那么这是一个好方法。再次,从数据中选择一个单元格开始,除非数据不连续。

(在这种情况下,您需要手动选择所有数据。)然后,请按照下列步骤操作:

。显示功能区的“数据”选项卡。

。单击“排序和过滤器”组中的“过滤器”工具。 Excel应该在第1行的每个列标签旁边显示“自动筛选”下拉指示器。 。使用“供应商”列的下拉指示器(C列),选择要打印的供应商的名称。您的列表将自动过滤,仅显示该供应商的采购订单。

。照常打印页面。打印的报告应仅显示您在步骤3中指定的供应商的采购订单。

如果要打印其他供应商的报告,则只需更改过滤器(步骤3)并重新打印(步骤4)。完成后,可以再次单击功能区“数据”选项卡上的“过滤器”工具来删除过滤器。

使用数据透视表

创建所需报表的另一种快速方法是使用Excel的数据透视表功能。我不会在这里介绍如何创建数据透视表,因为_ExcelTips_的其他问题已对此进行了介绍。可以按照所需的任何方式来设置数据透视表,但是您需要确保“供应商”字段位于“数据透视表字段”窗格的“筛选器”组中。 (请参见图2。)

图2.设置数据透视表。

image

接下来,根据您的Excel版本显示功能区的“选项”或“分析”选项卡。 (只有在数据透视表中选择一个单元格时,这些选项卡才可见。)在功能区左侧的数据透视表组中,单击“选项”下拉列表,然后选择“显示报告筛选器页面”。 (如前所述,只有在确保“供应商”字段位于“过滤器”组中时,此选项才可用。)Excel显示“显示报告过滤器页面”对话框。 (请参见图3。)

图3.“显示报告过滤器页面”对话框。

image

对话框中应该只列出一个字段,除非您向“过滤器”组中添加了“供应商”字段以外的内容。如果列出了多个字段,请确保单击“供应商”字段。当您单击确定时,Excel将为数据表中的每个供应商创建单独的数据透视表工作表。根据您选择包含在数据透视表中的信息,这些信息可以为您的供应商提供出色的报告。然后,您可以打印工作表以获取所需的报告。

使用宏

您可以通过多种方式设置宏以提供所需的数据。就个人而言,我更喜欢一个宏,该宏将遍历您的数据并为每个供应商创建新的工作表。这就是以下宏的作用-它将根据您的数据编译一个供应商列表,然后创建一个为每个供应商命名的工作表。然后,它将信息从原始工作表复制到新创建的工作表。

如宏开头所述,在运行宏之前,应在“供应商”列中选择第一个数据单元。完成后,每个供应商将有一个工作表,您可以根据需要对其进行格式化和打印。 (您可以通过添加将列标题信息或其他信息放入每个创建的工作表中的代码来使宏更加有用。)完成后,您需要删除这些供应商的工作表,以便下次运行宏时您不会遇到问题。

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

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

链接:/ excelribbon-ExcelTipsMacros [点击此处在新的浏览器标签中打开该特殊页面]。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本提示(13633)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。