複数列レイアウトでExcelシートを印刷する方法は?


13

Excelシートには、A、B、Cの3つの列がありますが、これらは非常に細いですが、多くの行(> 500)があります。これを印刷すると、10ページがほとんど空になります。各ページの左端にのみ、この3つの列があります。

私がやりたいのは、シート全体を複数列のレイアウトで印刷することです。1ページあたり2列または3列で十分です。現在、Excelから値をコピーし、Word文書に挿入してから、Wordの複数列レイアウト機能を使用することでそれを行っています。Excelで直接それを達成する方法はありませんか?

私の問題を明確にするために:現在、私のページはそのように見えます

A B C
A B C
A B C
A B C
. . .

しかし、私が欲しいのはこれです:

A B C     A B C     A B C
A B C     A B C     A B C
A B C     A B C     A B C
. . .     . . .     . . .

回答:


10

Excelでそれができるとは思いません。可能な回避策は、Microsoft Wordを使用して列をスネークすることです。列をスネークして使用するページを減らす方法

MS Wordを使用して列をスネークする(#msword)

後で説明するExcelマクロにダイアログを入れていないため、これはおそらく1回限りの使用で最も簡単です。

  1. Excelスプレッドシートから列を選択してコピーします。
  2. Wordに貼り付けます。これには少し時間がかかります
  3. テーブルの上部で繰り返す行を選択し、Wordでテーブル->繰り返す行を指定します
  4. アンカーを使用してテーブル全体を選択するか、テーブル内のセルを選択してからテーブル->選択->テーブル
  5. 列ボタンを使用して行数を指定するか、配置をより詳細に制御したい場合は、フォーマット->列

この例はうまく機能します。投稿には他の可能性もあります。


4

「datatable」というソーステーブルがある場合は、次の式をすべてのセル(印刷データが表示される場所)の余分なシートに追加します。

=OFFSET(datatable!$A$2;(ROW()-2)+((COLUMN()-1-MOD(COLUMN()-1;3))/3*4);MOD(COLUMN()-1;3))

上記はドイツ語から英語に翻訳されています。テスト済みのドイツ式は次のとおりです。 =BEREICH.VERSCHIEBEN(datatable!$A$2;(ZEILE()-2)+((SPALTE()-1-REST(SPALTE()-1;3))/3*4);REST(SPALTE()-1;3))

期待される結果:

これにより、シート「datatable」のコンテンツが変換されます。

A1 B1 C1
A2 B2 C2
A3 B3 C3
A4 B4 C4
A5 B5 C5
A6 B6 C6
...

に:

A1 B1 C1    A5 B5 C5    ...
A2 B2 C2    A6 B6 C6    ...
A3 B3 C3    ...
A4 B4 C4    ...

説明:

基本:

たとえば、3行下、4列右にOFFSET( datatable!$A$2; 3; 4 )相対的なセルを参照し$A$2ます。

ROW()およびCOLUMN()は、現在のシート内の現在のセルの位置を表す数字です(例$A$1=列1 /行1、$C$2=列3 /行2)。

(-1)オフセットを使用しており、最初の行と列が1であるため、すべての場所が必要ですが、最初に参照されるセルは$A$2$A$2オフセット1 ではなくである必要があります。

これ(ROW()-2)はoutput- / print-tableのヘッドライン用です(ヘッドラインがない場合は-1になります)。
$A$2ソース「datatable」の見出し用です。見出しがない場合は、$A$1(ではなく$A$2)で参照する必要があります。

詳細:

3番目のパラメーターOFFSET(...;...;MOD(COLUMN()-1;3))列オフセットで、ソース「datatable」の最初の3列のいずれかを常に参照します。
それは$A$2プラス列オフセット0、1、2、0、1、2、0、1、2、...

2番目のパラメーターでOFFSET(...; (ROW()-2) + ((COLUMN()-1-MOD(COLUMN()-1;3))/3*4) ;...)は、行オフセットを選択します。
基本的に、ここでの数学はy + x * 4です。

4は、表示する行の数です。
3は、ソース「データテーブル」内の列の数です。

xは列で構成され、モジュロ3
COLUMN()-1は0、1、2、3、...などです。
MOD(COLUMN()-1;3)0、1、2、0、1、2、0、1、2、...

COLUMN()-1-MOD(COLUMN()-1;3)0、3、6、9、...などになり、値は3列ごとにのみ変化します。
3で
除算すると0、1、2、3、...になります。4で乗算すると0、4、8、12、...になります。

Moduloの説明についてMOD()は、Excelヘルプ、またはwikipediaのモジュロ操作も参照してください)

(基本的なアイデアを提供してくれたJake Kacherに感謝します)


1

次の簡単な式を使用できます。

=OFFSET(Sheet1!$A$1,(ROW()-2)*5+COLUMN(),0)

データが5列で水平に流れるようにします。
次に、ページサイズを選択したり、各ページの最初の行を印刷したりできます
。VBAは必要ありません。


3
おそらくExcel Guruにとっては便利ですが、これをどこに置くのか、どのように使用するのかはわかりません。
アンソニーニコルズ

1
要求されたものを正確に実行するわけではありませんが、それでもなお興味深いものです。列Aに長い数字の列がある場合、この式をコピーしてC、D、E、F、Gと言い、十分な数までドラッグすると行の場合、データの5つの短い列を取得します。データは5つの列に流れますが、データを各列に流し込み、蛇行させることを期待しています。それでも、非常に興味深いコンパクトな式。
loneRanger

0

私が見つけた最も簡単な方法は、新しいワークシートを作成し、手動で別々の列に分割してテーブルを再作成することでした。

例:A1 =Sheet1!A1

B1 =Sheet1!B1

C1 =Sheet1!C1

D1ブランク(分割列の場合)

E1 =Sheet1!E51

F1 =Sheet1!B51

G1 =Sheet1!C51

これを50行以上コピーします。これにより、1列の100行のテーブルが2列の50行のテーブルに変わります。ニーズに合わせて調整してください。

もちろんこれは手作業であり、行カウントが同じままであることに依存します。元のテーブルの行数と必要な列数から必要な行数を動的に計算することは難しくありません。唯一の問題は、新しいシートで列に分割されたときに元のテーブルが1ページに収まるサイズを超えて拡大する場合です。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.