---
title: วิธีจัดหน้า Print ข้อมูลเยอะๆ ใน Excel ให้แบ่งหน้า Page Break ตามต้องการ
url: https://www.thepexcel.com/print-data-auto-page-break/
type: post
date: 2021-12-21
updated: 2025-12-22
author: Sira Ekabut
categories: [Excel VBA, Excel]
tags: [print, IF]
---

# วิธีจัดหน้า Print ข้อมูลเยอะๆ ใน Excel ให้แบ่งหน้า Page Break ตามต้องการ

มีคนถามผมมาว่าเค้ามีข้อมูลใน Excel ที่ต้อง Print ออกมาจำนวนมาก แต่มีปัญหาในการจัดหน้าไม่รู้จะทำยังไงให้ง่าย เนื่องจากว่าจุดแบ่งหน้าในแต่ละหน้าก็ดันไปไม่เท่ากัน (แต่ละหน้าจำนวนข้อมูลไม่เท่ากัน) การจะมานั่งแบ่งหน้า insert page break เอง ก็จะเสียเวลามากๆ

 

ใครมีปัญหาแบบนี้ก็สบายใจได้เลย เพราะบทความนี้ผมจะมาบอกแนวทางแก้ปัญหาให้เอง ซึ่งทำไม่ยากอย่างที่คิด แถมมีความยืดหยุ่นพอที่จะเอาไปประยุกต์ใช้กัยงานไหนก็ได้ด้วย

 

## ข้อมูลต้นฉบับ

 

[ดาวน์โหลดไฟล์ได้ที่นี่](https://github.com/ThepExcel/download/blob/master/print.xlsx)

 

ผมมีข้อมูลอยู่จำนวนมาก (5000 บรรทัด) ที่เรียงตามคอลัมน์ร้านค้า (StoreKey) แล้วต้องการจะ print ออกมาเป็น pdf

 

ซึ่งความยากก็คือ เราต้องการ**แบ่งหน้าทุกครั้งที่มีขึ้นร้านค้าใหม่เสมอ** (แต่ถ้าร้านนึงขายเยอะมาก ก็อาจมีหลายหน้าได้นะ)

 ![1](https://www.thepexcel.com/wp-content/uploads/2021/12/print-001.png) 

## ตั้งค่าเบื้องต้น

 

ขั้นตอนแรกที่ผมจะทำก็คือ สั่งตั้งค่าการ print ให้ความกว้าง fit พอดีกับกระดาษ 1 หน้า และสั่งให้มัน repeat การ print หัวตารางบรรทัดที่ 1 เสมอ ซึ่งส่วนนี้ทำได้ง่ายมากๆ

 ![2](https://www.thepexcel.com/wp-content/uploads/2021/12/print-002x-1024x692.png) 

## กำหนดจุดที่จะแบ่งหน้า Page Break

 

ก่อนอื่น เราจะเขียนสูตรขึ้นมา เพื่อให้ mark จุดที่ต้องการจะแบ่งหน้าไว้ก่อน

 

ในช่อง I2 (ถัดจากข้อมูล) ผมจะใช้สูตร IF เช็คว่าเลข StoreKey มีการเปลี่ยนหรือไม่? ดังนี้

 

```
=IF(E2<>E1,"y","n")
```

 

จากนั้น Copy ยาวลงไปข้างล่าง เราก็จะได้จุดที่จะทำการ Insert Page Break แล้ว ลอง scroll ลงไปดูข้างล่างได้

 ![3](https://www.thepexcel.com/wp-content/uploads/2021/12/print-005-1024x520.png) 

## ทำยังไงให้ Insert Page Break ในจุดที่ต้องการ?

 

มาถึงตรงนี้เราจะต้องใช้ Code VBA เล็กๆ น้อยๆ ในการช่วยแล้ว โดยเราจะใส่ Code นี้ลงไปใน Module ของ VBA

 

โดยอย่าลืมเปิด Ribbon Developer ขึ้นมาก่อน (อยู่ใน Excel Option->Customize Ribbon)

 ![4](https://www.thepexcel.com/wp-content/uploads/2021/12/print-009-1024x837.png) 

จากนั้น กด Alt+F11 เพื่อเข้าสู่ VB Editor แล้วคลิ๊กขวา Insert Module ตามรูป

 ![5](https://www.thepexcel.com/wp-content/uploads/2021/12/print-008.png) 

แล้ว Paste Code นี้ลงไป เพื่อให้มันวน Loop ใส่ Page Break ในจุดที่เรา Mark ตัว y เอาไว้

 

```

Sub InsertBreak_At_Mark()
Dim i As Long
Dim firstAddress As String
Application.ScreenUpdating = False

With Range(ActiveCell, ActiveCell.End(xlDown))
        Set c = .Find("y", LookIn:=xlValues)
        If Not c Is Nothing Then
        firstAddress = c.Address
            Do
                'MsgBox (c.Address)
                c.PageBreak = xlPageBreakManual
                Set c = .FindNext(c)
            Loop While Not c Is Nothing And firstAddress <> c.Address
        End If
    End With

Application.ScreenUpdating = True
End Sub
```

 

จากนั้น**กลับไปยังหน้า Excel แล้วให้เลือกคอลัมน์ I ที่เราเขียน y/n ไว้ แล้ว Run Code** ตามรูป

 ![6](https://www.thepexcel.com/wp-content/uploads/2021/12/print-006-1024x706.png) 

เท่านี้มันก็จะกำหนดพื้นที่ Mark ให้เรียบร้อยแล้ว ลองกด Page Break Preview ดูได้

 ![7](https://www.thepexcel.com/wp-content/uploads/2021/12/print-007.png) 

## เก็บตกจุด Break เกิน ที่บรรทัดที่ 2

 

อย่างไรก็ตามตอนนี้สุตรเราดัน Mark ว่าจะ Break ที่บรรทัดที่ 2 ด้วย ซึ่งไม่ Makesense ดังนั้นถ้าเราแก้ค่าหรือแก้สูตรให้บรรทัดที่ 2 เป็น n ไปก่อนได้ก็จะดีกว่า หรือจะไป remove page break เองก็ได้เช่นกัน โดยเลือกบรรทัดที่ 2 ไว้ แล้ว Remove Page break ดังรูป

 ![8](https://www.thepexcel.com/wp-content/uploads/2021/12/print-010.png) 

## ลอง Print / Save PDF ดู

 ![9](https://www.thepexcel.com/wp-content/uploads/2021/12/print-011-1024x911.png) 

จะเห็นว่าได้ผลลัธ์ตามต้องการครับ

---

_Source: [https://www.thepexcel.com/print-data-auto-page-break/](https://www.thepexcel.com/print-data-auto-page-break/)_
