在多列中打印单个列(Microsoft Excel)
有时,您在工作表中收集的数据非常适合放在一列中。例如,您可能有一个名称列表,它们都包含在工作表的A列中。当您选择打印工作表时,它会占用相当多的页面,所有页面几乎都空白,因为每页的左侧都包含一个名称,而右侧则包含空白。
在这种类型的实例中,最好将单列显示为多列。这样一来,您可以在每个打印页面中使用更多的页面,而在打印作业中使用更少的整体页面。不幸的是,Excel不包含任何固有命令或打印设置,使您可以自动重新设置数据格式,以便更好地打印。但是,有解决方法。
一个经常被忽略的解决方法是将单列列表复制到空白的Word文档中。如果将其粘贴为纯文本格式,则可以将每一页格式化为多列,并实际打印信息。
如果您不想使用Word,则可以将信息从第一列剪切并粘贴到其他列中,以提供所需的打印列数。当然,这应该在新的工作表或工作簿中完成,这样原始数据就不会受到干扰。例如,如果原始列表中有200个名称,则可以一次从列表中剪切40个名称,然后将它们粘贴到新工作表的A到E列中。与打印原始单列工作表相比,打印此工作表所需的页面更少。
当然,如果您必须经常执行剪切和粘贴操作,那么杂务会很快变得很烦人。在这种情况下,您可以使用具有完全相同功能的宏:它将原始列表切成薄片并将其切成小块,然后将其粘贴到新工作簿上的许多列中。
Sub SingleToMultiColumn() Dim rng As Range Dim iCols As Integer Dim lRows As Long Dim iCol As Integer Dim lRow As Long Dim lRowSource As Long Dim x As Long Dim wks As Worksheet Set rng = Application.InputBox _ (prompt:="Select the range to convert", _ Type:=8) iCols = InputBox("How many columns do you want?") lRowSource = rng.Rows.Count lRows = lRowSource / iCols If lRows * iCols <> lRowSource Then lRows = lRows + 1 Set wks = Worksheets.Add lRow = 1 x = 1 For iCol = 1 To iCols Do While x <= lRows And lRow <= lRowSource Cells(x, iCol) = rng.Cells(lRow, 1) x = x + 1 lRow = lRow + 1 Loop x = 1 Next End Sub
当您运行此宏时,要求您选择要转换的范围,然后要求您指定要将其重新格式化为的列数。它在当前工作簿中创建一个新的工作表,并将信息从原始工作表复制到您指定的尽可能多的列中。
有关解决此问题的其他资源,请访问以下网站:
http://www.ozgrid.com/VBA/MiscVBA.htm#Print http://www.mvps.org/dmcritchie/excel/snakecol.htm
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(2219)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本: