単一の列を複数の列に印刷する(Microsoft Excel)
ワークシートに収集したデータが1つの列に非常にうまく収まる場合があります。たとえば、名前のリストがあり、それらはすべてワークシートの列Aに含まれている場合があります。ワークシートを印刷することを選択すると、かなりの数のページが消費される可能性があり、各ページの左側に名前が含まれ、右側に空白が含まれるため、すべてがほぼ空白になります。
このタイプのインスタンスでは、単一の列を複数の列であるかのように印刷すると便利です。そうすれば、印刷ジョブで使用する各印刷ページを増やし、全体のページを減らすことができます。残念ながら、Excelには、データを自動的に再フォーマットして印刷を改善するための固有のコマンドや印刷設定が含まれていません。ただし、回避策があります。
見落とされがちな回避策の1つは、単一列のリストを空白のWord文書にコピーすることです。プレーンテキストとしてそこに貼り付けると、各ページを複数の列にフォーマットして、実際に情報を印刷できます。
Wordを使用したくない場合は、最初の列から他の列に情報をカットアンドペーストして、必要な数の印刷列を指定できます。もちろん、これは新しいワークシートまたはワークブックで実行して、元のデータが乱されないようにする必要があります。たとえば、元のリストに200の名前がある場合、リストから一度に40の名前を切り取り、新しいワークシートの列AからEに貼り付けることができます。このワークシートを印刷すると、元の1列のワークシートを印刷するよりも少ないページで済みます。
もちろん、このカットアンドペーストを頻繁に行う必要がある場合、雑用はすぐに面倒になる可能性があります。この例では、まったく同じことを行うマクロを使用できます。元のリストをスライスしてさいの目に切り、新しいブックのいくつかの列に貼り付けます。
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
このマクロを実行すると、変換する範囲を選択するように求められ、次に、再フォーマットする列の数を指定するように求められます。現在のワークブックに新しいワークシートを作成し、元のワークシートから指定した数の列に情報をコピーします。
この問題を解決するための追加のリソースについては、次のWebサイトを参照してください。
http://www.ozgrid.com/VBA/MiscVBA.htm#Print http://dmcritchie.mvps.org/excel/snakecol.htm
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(8239)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice 365のExcelに適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。
link単一の列を複数の列に印刷する。