• ベストアンサー

エクセルの改ページを自動で行う方法

エクセルの質問です。 今、在庫表をエクセルで作っています。 単純化すると以下のような形です。 棚番号|商品名|商品数 ------+------+------ 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くらいあるため合理的ではないです。 棚番号が変わったら自動で改ページするような機能はないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.2

マクロになりますが。 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 こんな感じで出来ないかな?

hmhm39
質問者

お礼

ばっちり走りました! 途中空白があって何度か実行しなおしましたが、"A1"の表記が直観的で使いやすいマクロでした。 本当にありがとうございます。

その他の回答 (2)

  • kigoshi
  • ベストアンサー率46% (120/260)
回答No.3

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

hmhm39
質問者

お礼

残念ながらすべての行が改ページされ、1026項までしか改ページできませんと怒られてしまいました。 わざわざ作ってもらったのに使いこなせず申し訳ありません。

  • orangezzzz
  • ベストアンサー率35% (401/1119)
回答No.1

おはようございます。 >棚番号が変わったら自動で改ページするような機能はないでしょうか。 そのような機能はありません。 >棚番号が同じものをまとめて印刷したいと思います。 AAAとBBBは同じではないと思いますが。 根本的に管理方法を変えた方が良いと思います。 ExcelではなくAccessにするとか。

関連するQ&A

専門家に質問してみよう