- ベストアンサー
エクセルの印刷
エクセルで縦に細長い表を1枚の紙に2列ずつ表示して印刷することは可能ですか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
あまり体裁を言わず、素データだけなどの表で、1ページに詰めて(印刷使用紙枚数を節約して)印刷したい、そんなときの用途に。 A1:C600とかのデータがSheet1にあるとします。 これをSheet2のA1:○50(○は列番号)に表を 組みかえるコードです。 「50」に当たる数は、プログラム実行時に聞いてきますので入力して指定します。 列数は現状の表で決まっていますからその数を入力します。(質問では2列) 列数は256列で制約がありますから、それ以下に収まる データ行数のものが対象です。 Sub test01() Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Worksheets("sheet1") Set sh2 = Worksheets("sheet2") r = InputBox("新シートは何行にするか") c = InputBox("現在の表は何列ですか") m = Val(r) n = Val(c) d = sh1.Range("a1").CurrentRegion.Rows.Count k = Int(d / m) + 1 For x = 1 To k Sheets("sheet1").Select sh1.Range(Cells((x - 1) * m + 1, 1), Cells(x * m, n)).Copy Sheets("sheet2").Activate sh2.Cells(1, (x - 1) * n + 1).Select ActiveSheet.Paste Next x End Sub あとは、列を1ページに収まるように選択して、その印刷範囲の指定をして印刷する。
その他の回答 (3)
- shishishishi
- ベストアンサー率39% (362/921)
> Sheet1のABCD列のデータ(同じ行のデータはABCD列までを含めて1個のデータとする)を詰めて、Sheet2の3行目以降のABCD列に表示する場合には、どう変化させれば、よいでしょうか? > ここで尋ねるのは、筋違いなんですが、すみません。 質問841058の続きですね? そういう場合は本来あらたに質問を設定すべきなのでしょうが、(削除対象?)まあ、簡単な手直しなのでお答えしておきます。 この回答自体削除される可能性が高いので早めにコピーしてください。 Sub tenki03() Dim i As Integer, n As Integer n = 3 For i = 3 To 100 If Sheets("Sheet1").Cells(i, 1) <> "" Then For j = 1 To 4 Sheets("Sheet2").Cells(n, j).Value = Sheets("Sheet1").Cells(i, j) Next j n = n + 1 End If Next i End Sub
お礼
どうもありがとうございます。そして、どうもすみません。
- shishishishi
- ベストアンサー率39% (362/921)
こんにちは、shishishishiです。 回答しておきましたが複式簿記の仕分けは解決しましたか? さて、印刷設定ですね? 出来ますよ。文字が小さくなってしまいますが・・・。 ファイル→印刷→プロパティ、でページレイアウトで設定します。 通常印刷で4ページになるものでしたら「4ページ/枚」を選択します。
補足
どうもありがとうございます。 VBAの件ではお世話になりました。 実は、VBAの件で、 Sheet1のABCD列のデータ(同じ行のデータはABCD列までを含めて1個のデータとする)を詰めて、Sheet2の3行目以降のABCD列に表示する場合には、どう変化させれば、よいでしょうか? ここで尋ねるのは、筋違いなんですが、すみません。
- pee-yuu
- ベストアンサー率24% (23/93)
私はそれをコピーしたりして、無理矢理1枚の紙に収まるように直しますね(汗) よくレポートで縦に長い表を作ったので・・・。 そっちの無理矢理分割した表は、あくまでも印刷用です。 数値と形式のみコピーでできるかと。
補足
やはり印刷時の設定とかでは、できないものなのでしょうか?
お礼
どうもありがとうございます。 なんか仰々しいないようですが、やってみます。