เลขที่เอกสารแบบ INV-2026-0001, INV-2026-0002 ที่เพิ่มทีละหนึ่งเอง ทำได้ด้วยสูตรผสมระหว่าง TEXT (เติมเลข 0 ข้างหน้า), ROW หรือ COUNTIF (นับลำดับ) และเครื่องหมาย & ต่อข้อความ บทความนี้รวมสูตรทำเลขรันนิ่งหลายแบบ ตั้งแต่แบบง่ายสุดจนถึงแบบรีเซ็ตทุกปี พร้อมข้อควรระวังสำคัญ
แบบที่ 1: เลขรันต่อเนื่องตามแถว

ภาพจริงจาก Excel (Microsoft 365): ตัวอย่าง RUNNING NUMBER FORMULA จากคลิปสอน ข้อมูลในภาพเป็นตัวอย่างสมมติ อาจต่างจากตัวเลขในข้อความเล็กน้อย แต่หลักการเหมือนกัน
ตัวอย่างสูตร ="INV-2026-"&TEXT(ROW()-1,"0000") ได้ผลลัพธ์ INV-2026-0001 / INV-2026-0002 / 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")) ได้ผลลัพธ์ INV-2026-0001 / 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") ได้ผลลัพธ์ INV-2026-0001 / INV-2026-0002 / INV-2027-0001
COUNTIFS นับเฉพาะแถวที่วันที่อยู่ในปีเดียวกันและไม่เกินแถวปัจจุบัน พอข้ามไปปี 2027 ตัวนับจึงเริ่มที่ 1 ใหม่ (ต้องเรียงข้อมูลตามวันที่ก่อน)
แบบที่ 4: เลขรันแยกตามลูกค้า
ตัวอย่างสูตร =A2&"-"&TEXT(COUNTIF($A$2:A2,A2),"000") ได้ผลลัพธ์ CUS01-001 / CUS02-001 / CUS01-002
COUNTIF นับว่ารหัสลูกค้าตัวนี้ปรากฏมาแล้วกี่ครั้งจนถึงแถวปัจจุบัน กลายเป็นเลขลำดับงานของลูกค้าแต่ละราย
ข้อควรระวังที่สำคัญที่สุด
- สูตรคำนวณใหม่ทุกครั้ง — ถ้าแทรกแถว ลบแถว หรือ เรียงข้อมูลใหม่ เลขที่เอกสารจะเปลี่ยนตาม ซึ่งไม่ควรเกิดกับเอกสารที่ออกไปแล้ว
- วิธีแก้: พอออกเอกสารจริงแล้วให้ “วางเป็นค่า” — คัดลอกคอลัมน์เลขที่ แล้ว Paste Special → Values ทับ เพื่อตรึงเลขไว้ถาวร
- ใช้ ROW() ต้องระวังการเรียงลำดับ — ถ้าตารางจะถูก sort บ่อย ให้ใช้แบบ COUNTIF ที่ผูกกับข้อมูลจริงแทน
- อยากสร้างเลขทีเดียวเป็นชุด — ใช้ SEQUENCE เช่น
="INV-2026-"&TEXT(SEQUENCE(50),"0000")ได้ 50 เลขรวด