- ベストアンサー
エクセルの改ページを自動で行う方法
エクセルの質問です。 今、在庫表をエクセルで作っています。 単純化すると以下のような形です。 棚番号|商品名|商品数 ------+------+------ 1 |AAA |5 1 |BBB |6 2 |CCC |10 2 |DDD |2 3 |EEE |1 3 |FFF |2 3 |GGG |3 これを印刷するときに 棚番号が同じものをまとめて印刷したいと思います。 (下記のように3枚に分かれればいいです。) 棚番号|商品名|商品数 ------+------+------ 1 |AAA |5 1 |BBB |6 棚番号|商品名|商品数 ------+------+------ 2 |CCC |10 2 |DDD |2 棚番号|商品名|商品数 ------+------+------ 3 |EEE |1 3 |FFF |2 3 |GGG |3 このような形です。 ページ番号は通しの番号を振りたいと思います。 改ページを手動で入れていってもいいのですが、実際は棚が200くらいあるため合理的ではないです。 棚番号が変わったら自動で改ページするような機能はないでしょうか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
マクロになりますが。 Sub kaip() Range("A1").Select While ActiveCell <> "" ActiveCell.Offset(1).Select With ActiveCell If .Value <> .Offset(-1) Then ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell End If End With Wend End Sub こんな感じで出来ないかな?
その他の回答 (2)
- kigoshi
- ベストアンサー率46% (120/260)
1)そのシートのシートタブを右クリック。「コードの表示」をクリック。 2)右側のエディタエリアに下記コードを貼り付け。 3)[F5]を押す。 Sub pageHop() ActiveSheet.ResetAllPageBreaks Dim rIdx As Long ActiveSheet.PageSetup.PrintTitleRows = "$1:$1" For rIdx = 2 To Range("A65536").End(xlUp).Row If Cells(rIdx, 1).Value <> Cells(rIdx + 1, 1).Value Then ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Rows(rIdx + 1) End If Next End Sub
お礼
残念ながらすべての行が改ページされ、1026項までしか改ページできませんと怒られてしまいました。 わざわざ作ってもらったのに使いこなせず申し訳ありません。
- orangezzzz
- ベストアンサー率35% (401/1119)
おはようございます。 >棚番号が変わったら自動で改ページするような機能はないでしょうか。 そのような機能はありません。 >棚番号が同じものをまとめて印刷したいと思います。 AAAとBBBは同じではないと思いますが。 根本的に管理方法を変えた方が良いと思います。 ExcelではなくAccessにするとか。
お礼
ばっちり走りました! 途中空白があって何度か実行しなおしましたが、"A1"の表記が直観的で使いやすいマクロでした。 本当にありがとうございます。