- ベストアンサー
エクセルについて質問です!
A1~C2000までにデータがある状態で、これをそのまま印刷をすると枚数が増えてしまうため データ自体を横に並べなおし、A3におさまるようにしてから印刷しようとしています。 コピーペーストだとあまりに時間がかかってしまうため、それ以外の方法で 効率よくできる方法があればご教授下さい。 よろしくおねがいいたします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
'シート見出しの「Sheet1」の部分で右クリック → コードの表示 → VBE画面がでてきますので貼り付けて下さい。 Sub Macro1() Set WS01 = Sheets("Sheet1") '(1)ここを変更 Set WS02 = Sheets("Sheet2") '(1)ここを変更 COUNTER = 1 '(2)ここを変更 For INP = 1 To 2000 Step 25 '(4)ここを変更 WS01.Range("A" & INP & ":C" & INP + 24).Copy '(5)ここを変更 WS02.Range("A" & COUNTER).PasteSpecial Paste:=xlPasteValues, Transpose:=True COUNTER = COUNTER + 4 '(3)ここを変更 Next INP End Sub '(1) シート名Sheet1からSheet2へコピーするようにしているので適宜変更して下さい。 '(2) Sheet2の1行目から貼り付けるようにしていますのでCOUNTER = 1を2にすれば2行目からはじまります。 '(3) 貼り付けされた次の行に空白行が1行できるようになっていますので不要な場合はCOUNTER + 4をCOUNTER + 3にして下さい。 '(4) 25行ずつコピーしていますので印刷範囲からはみ出る場合は25を変えて調整してください。 '(5) (4)を変更した場合、必ず変更した数字から1(24になっているところです)を引いた数字に変更して下さい。
その他の回答 (5)
- keithin
- ベストアンサー率66% (5278/7941)
一番簡単で確実かつ効率よくできる方法: A1:C2000をコピーする ワードを起動して貼り付ける 用紙サイズをA3に変更する 段組みで必要な段数(8段でも10段でも)にする 印刷する。 エクセルでごちゃごちゃやる方法: ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける Sub macro1() range("D:AI").delete shift:=xlshifttoleft Range("D1:F1").Formula = Array("=$A1", "=$B1", "=$C1") Range("D1:F60").FillDown Range("D1:F60").Borders.LineStyle = xlContinuous Range("D1:F60").Borders.Weight = xlMedium Range("D1:F60").Borders(xlInsideVertical).LineStyle = xlNone Range("D1:F60").Borders(xlInsideHorizontal).LineStyle = xlNone ’とりあえず8列組 Range("D1:G60").Copy Range("H61,L121,P181,T241,X301,AB361,AF421") Range("D1:AI480").AutoFill Range("D1:AI2000") Range("D:AI").SpecialCells(xlCellTypeBlanks).Delete shift:=xlShiftUp End Sub ファイルメニューからエクセルに戻る ALT+F8を押してマクロを実行する 印刷範囲を設定し,60行ごとに改ページを挿入し,印刷する。
お礼
なるほど!ワードという手もありましたね。 2つも方法を提案していただきありがとうございました!!!
- acha51
- ベストアンサー率41% (436/1042)
恥ずかしながら力技ですが・・・ 1.新しい印刷用シートを作る 2.元シートのA1~C60を選択 3.新しい印刷用シートのA1を選択し、右クリック 形式を選択してリンク貼り付けする 4.元シートのD1~F60を選択 5.新しい印刷用シートのD1を選択し、右クリック 形式を選択してリンク貼り付けする 6.これを繰り返す エクセル2003は256列までしか出来ません。 7.A3に入るよう列幅、フォントサイズを調整します。 元シートを変更すると印刷シートも変更されます。 元シートが無入力セルは0と表示されるのが困るのであれば ツール オプション 表示タブから 0値のチェックを外す
お礼
なるほど。それだと同じシートで作るより間違いが少なそうですね。 ありがとうございました!
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 横からお邪魔します。 No.1さんの補足に >A1~C60あたりまでに貼り付けて >その次のデータはD1~F60に貼り付けるという方法をとりたいのです とありましたので余計なお世話かもしれませんが・・・ VBAでの一例です。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i As Long Application.ScreenUpdating = False Cells(61, 1).Select Do While Selection <> "" i = Selection.Row Range(Cells(i, 1), Cells(i + 59, 3)).Cut Destination:= _ Cells(1, Columns.Count).End(xlToLeft).Offset(, 1) Selection.Offset(60).Select Loop Application.ScreenUpdating = True Columns.AutoFit End Sub 'この行まで ※ 1行目はタイトル行になっているのが普通だと思いますが、それは無視して1行目からずぅ~~~っとデータが入っているとしています。 ※ 一旦マクロを実行すると元に戻せませんので、別Sheetでマクロを試してみてください。 ご希望の方法でなかったらごめんなさいね。m(_ _)m
お礼
回答ありがとうございました。 VBAの知識が全くないので、これから勉強したいと思います。 ありがとうございました!
- mar00
- ベストアンサー率36% (158/430)
ただ単純に横にしたいだけなら コピー → 形式を選択して貼り付け → 行列を入れ替えるにチェックを入れれば一回で済むはか゜ですが。 ただしExcel2003までは列が足りないのでできません。 余計な事だと思いますが 横にしただけではかえって印刷の枚数は大幅に増えると思います。 それならまだA3の縦で印刷した方が枚数は少なくて済むと思います。 (行の高さの方が列の幅より狭いという前提ですが)
お礼
回答ありがとうございます。 やはり私の質問の仕方が悪かったようです。 横にするというのは横に並べるという意味で、 A3にみっちりおさまるようにしたいので、A1~C60あたりまでに貼り付けて その次のデータはD1~F60に貼り付けるという方法をとりたいのです。 この方法をとると、かたまりで20個くらいはよこに 並べられるんではないかと思ってます。 今の状態だとA1~C200のみにデータが並んでいるので、印刷したとき、 右に余分なスペースがうまれてしまします。 ご回答ありがとうございました!
- jacky-ts
- ベストアンサー率47% (17/36)
コピペ技です。 並べ直したい範囲を選択する。 ↓ コピー ↓ 新しいシートへ移動(※) ↓ 右クリック ↓ 「形式を選択して貼り付け」を選ぶ。 ↓ 「縦横を入れ替える」にチェックを入れて貼り付ける。 ↓ 以上。 ※貼り付け先は、同じシートでも可能です。 分かりやすいかと思い、今回は新しいシートと書きました。
お礼
回答ありがとうございます。 質問の仕方が悪かったかもしれないです。 A3におさまるようにしたいので、A1~C60あたりまでに貼り付けて その次のデータはD1~F60に貼り付けるという方法をとりたいのです。 折角お答えいただいたのに申し訳ございません。
お礼
ありがとうございます。この方法で本日解決いたしました。 最後に縦と横を入れ替えて完成しました。 これを気にもっとエクセルを勉強しようと思いました。 感謝いたします。