เลขที่เอกสารแบบ INV-2026-0001, INV-2026-0002 ที่เพิ่มทีละหนึ่งเอง ทำได้ด้วยสูตรผสมระหว่าง TEXT (เติมเลข 0 ข้างหน้า), ROW หรือ COUNTIF (นับลำดับ) และเครื่องหมาย & ต่อข้อความ บทความนี้รวมสูตรทำเลขรันนิ่งหลายแบบ ตั้งแต่แบบง่ายสุดจนถึงแบบรีเซ็ตทุกปี พร้อมข้อควรระวังสำคัญ
แบบที่ 1: เลขรันต่อเนื่องตามแถว
="INV-2026-"&TEXT(ROW()-1,"0000")| A | B | |
|---|---|---|
| 1 | เลขที่เอกสาร | ลูกค้า |
| 2 | INV-2026-0001 | บริษัท ก |
| 3 | INV-2026-0002 | บริษัท ข |
| 4 | INV-2026-0003 | ร้าน ค |
ข้อมูลเริ่มแถวที่ 2 จึงใช้ ROW()-1 ให้เริ่มนับที่ 1 รหัส "0000" ใน TEXT บังคับให้เป็น 4 หลักเสมอ (0001 ไม่ใช่ 1) เหมาะกับตารางที่ไม่มีการสลับแถว
แบบที่ 2: นับต่อจากเลขล่าสุด (เพิ่มทีละแถว)
ใช้เมื่ออยากพิมพ์เลขเฉพาะแถวที่มีข้อมูลจริง วางสูตรในคอลัมน์ A โดยดูจากคอลัมน์ข้อมูล B
=IF(B2="","","INV-2026-"&TEXT(COUNTIF($B$2:B2,"?*"),"0000"))| A | B | |
|---|---|---|
| 1 | เลขที่เอกสาร | ลูกค้า |
| 2 | INV-2026-0001 | บริษัท ก |
| 3 | ||
| 4 | INV-2026-0002 | ร้าน ค |
COUNTIF($B$2:B2,"?*") นับเฉพาะเซลล์ที่มีข้อความในช่วงตั้งแต่หัวตารางถึงแถวปัจจุบัน (ล็อกหัวด้วย $B$2) แถวว่างจะไม่ได้เลข ทำให้เลขไม่กระโดด
แบบที่ 3: รีเซ็ตเลขรันทุกปี
สมมติคอลัมน์ B เก็บวันที่เอกสาร ต้องการให้เลขรันเริ่มนับ 1 ใหม่เมื่อขึ้นปีใหม่
="INV-"&YEAR(B2)&"-"&TEXT(COUNTIFS($B$2:B2,">="&DATE(YEAR(B2),1,1),$B$2:B2,"<="&B2),"0000")| B | C | |
|---|---|---|
| 1 | วันที่เอกสาร | เลขที่ |
| 2 | 15/12/2026 | INV-2026-0001 |
| 3 | 28/12/2026 | INV-2026-0002 |
| 4 | 04/01/2027 | INV-2027-0001 |
COUNTIFS นับเฉพาะแถวที่วันที่อยู่ในปีเดียวกันและไม่เกินแถวปัจจุบัน พอข้ามไปปี 2027 ตัวนับจึงเริ่มที่ 1 ใหม่ (ต้องเรียงข้อมูลตามวันที่ก่อน)
แบบที่ 4: เลขรันแยกตามลูกค้า
=A2&"-"&TEXT(COUNTIF($A$2:A2,A2),"000")| A | C | |
|---|---|---|
| 1 | รหัสลูกค้า | เลขที่งาน |
| 2 | CUS01 | CUS01-001 |
| 3 | CUS02 | CUS02-001 |
| 4 | CUS01 | CUS01-002 |
COUNTIF นับว่ารหัสลูกค้าตัวนี้ปรากฏมาแล้วกี่ครั้งจนถึงแถวปัจจุบัน กลายเป็นเลขลำดับงานของลูกค้าแต่ละราย
ข้อควรระวังที่สำคัญที่สุด
- สูตรคำนวณใหม่ทุกครั้ง — ถ้าแทรกแถว ลบแถว หรือ เรียงข้อมูลใหม่ เลขที่เอกสารจะเปลี่ยนตาม ซึ่งไม่ควรเกิดกับเอกสารที่ออกไปแล้ว
- วิธีแก้: พอออกเอกสารจริงแล้วให้ “วางเป็นค่า” — คัดลอกคอลัมน์เลขที่ แล้ว Paste Special → Values ทับ เพื่อตรึงเลขไว้ถาวร
- ใช้ ROW() ต้องระวังการเรียงลำดับ — ถ้าตารางจะถูก sort บ่อย ให้ใช้แบบ COUNTIF ที่ผูกกับข้อมูลจริงแทน
- อยากสร้างเลขทีเดียวเป็นชุด — ใช้ SEQUENCE เช่น
="INV-2026-"&TEXT(SEQUENCE(50),"0000")ได้ 50 เลขรวด