ข้ามไปเนื้อหา

RFM และกลุ่มลูกค้า

Recency ควรใช้วันไหน? ตัวอย่าง RFM แบบคำนวณให้ดูทีละขั้น

ลองไล่ดูวันซื้อ 3 ครั้งของลูกค้าสมมติ 1 ราย แล้วทำความเข้าใจว่าทำไมวันสั่งซื้อ วันส่งถึง และวันแก้ไขข้อมูล จึงตอบคนละคำถาม พร้อมสูตรสเปรดชีตที่ทำซ้ำได้และจุดตรวจสอบคุณภาพข้อมูล

Read in English
นาฬิกาทรายและกองบัตรกระดาษเปล่าบนโต๊ะไม้ มีที่ทับกระดาษสีเขียวและต้นไม้ในแสงธรรมชาติ
ภาพประกอบเชิงบรรณาธิการที่สร้างด้วย AI: นาฬิกาทรายและบัตรเปล่าสื่อถึงการนับเวลาที่ผ่านไป โดยไม่แสดงข้อมูลลูกค้าหรือผลการคำนวณจริง

จุดเริ่มต้นแบบจับต้องได้: หนึ่งร้าน สามออเดอร์ หนึ่งคำถาม

ลองนึกภาพร้านสกินแคร์ขนาดเล็กในกรุงเทพฯ ที่เริ่มส่งออกประวัติออเดอร์มาไว้ในสเปรดชีตเพื่อทำ RFM analysis นักวิเคราะห์เปิดไฟล์ขึ้นมาแล้วก็เจอโจทย์ทันที: ในแต่ละแถวของตารางออเดอร์มีวันที่อย่างน้อย 3 แบบ — วันที่ลูกค้ากดสั่งซื้อ วันที่พัสดุถูกส่งถึง และวันที่พนักงานแก้ไขข้อมูลล่าสุดเพื่อเพิ่มหมายเหตุการคืนสินค้า ถ้าจะคำนวณ Recency ควรใช้วันไหนกันแน่?

นี่ไม่ใช่เคสยิบย่อยเชิงทฤษฎีเลย ถ้าเลือกวันที่ผิด ลูกค้าสองคนที่มีพฤติกรรมเหมือนกันอาจได้ค่า Recency ต่างกันทันที ถ้าเลือกวันแบบไม่สม่ำเสมอ — บางคนใช้วันสั่งซื้อ บางคนใช้วันส่งถึง — การจัดอันดับทั้งหมดก็เสียตั้งแต่ก่อนเริ่มให้คะแนน คู่มือนี้จะพาดูตัวอย่างลูกค้าสมมติ 1 ราย คือ Customer A ที่มีออเดอร์ 3 รายการกำหนดไว้ชัดเจน เพื่อแสดงให้เห็นแบบตรงไปตรงมาว่าควรตัดสินใจอย่างไรและควรบันทึกข้อตกลงนั้นอย่างไร

Recency วัดอะไรกันแน่

Recency คือจำนวนวันตามปฏิทินระหว่าง “การซื้อครั้งล่าสุดที่เข้าเกณฑ์” ของลูกค้ากับ “วันอ้างอิง” ที่กำหนดตายตัว มันไม่ได้วัดความกระตือรือร้น ความภักดี หรือความตั้งใจซื้อซ้ำ แต่วัดเวลาที่ผ่านไป โดยอิงจากฟิลด์วันที่ที่คุณกำหนดให้เป็นวันซื้อ Shopify อธิบาย RFM ว่าเป็นการนับ “จำนวนวันนับจากการซื้อครั้งล่าสุด” โดยอิงจาก “วันที่ที่คุณใช้เป็นจุดวัด recency” ซึ่งหมายความว่าวันอ้างอิงต้องถูกตรึงไว้ที่จุดเวลาเดียว ไม่ใช่เปลี่ยนไปเรื่อย ๆ ตามวันปัจจุบัน

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

อ้างอิง: Shopify: RFM Analysis — Definition and Segmentation Guide (2026)

วันที่ตัวเลือก 3 แบบ และคำถามที่แต่ละแบบตอบ

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

วันส่งถึง คือเวลาที่พัสดุถึงมือลูกค้า หากใช้ฟิลด์นี้ ความหมายของ Recency จะเปลี่ยนไปเป็นการวัดเวลาที่ผ่านไปนับจากวันที่ลูกค้า “ได้รับสินค้า” แทนที่จะเป็นวันที่เขา “ตัดสินใจซื้อ” ซึ่งอาจมีประโยชน์ในธุรกิจที่รอบการซื้อซ้ำเริ่มนับจากวันที่ได้รับของ เช่น สินค้าที่ถูกใช้หมดภายในจำนวนวันที่ค่อนข้างคาดการณ์ได้ อย่างไรก็ตาม วันส่งถึงมักมีข้อมูลหาย อัปเดตช้าตามข้อมูลจากผู้ให้บริการขนส่ง หรือไม่มีเลยในกรณีสินค้า digital

วันแก้ไขข้อมูล คือเวลาที่มีการเปลี่ยนแปลงข้อมูลออเดอร์ครั้งล่าสุดในระบบหลังบ้าน มันสะท้อนกิจกรรมการกรอกหรือปรับข้อมูล ไม่ใช่พฤติกรรมของลูกค้า หากพนักงานมาเพิ่มหมายเหตุการคืนสินค้าหลังส่งของไปหลายสัปดาห์ วันแก้ไขข้อมูลก็จะถูกเลื่อนไปข้างหน้า ทำให้ลูกค้าดูเหมือนเพิ่งซื้อกว่าความเป็นจริง ดังนั้นไม่ควรใช้ฟิลด์นี้เป็นข้อมูลตั้งต้นของ Recency เว้นแต่ว่าคำถามที่คุณต้องการตอบคือ “เรามีการแตะเรคคอร์ดนี้ล่าสุดเมื่อไร?”

การตัดสินใจเลือกหนึ่งในสามแบบนี้เป็นคำถามทางธุรกิจ ไม่ใช่คำถามทางคณิตศาสตร์ ควรเขียนข้อตกลงนี้ไว้ให้ชัดก่อนสร้างสูตรใด ๆ และต้องใช้แบบเดียวกันอย่างสม่ำเสมอกับทุกแถวในชุดข้อมูล

สำหรับออเดอร์ล่าสุด T05-03 ของลูกค้า A สมมติให้วันสั่งซื้อเป็น 9 ตุลาคม วันส่งถึงเป็น 11 ตุลาคม และวันแก้ไขข้อมูลเป็น 12 ตุลาคม 2026 เมื่อเทียบกับวันอ้างอิง 13 ตุลาคม จะได้ 4, 2 และ 1 วันตามลำดับ มีเพียง 4 วันที่ตอบคำถามเรื่องการซื้อตามข้อตกลงของใบงานนี้ ทั้งสามวันเป็นข้อมูลสมมติของออเดอร์เดียวกัน ไม่ใช่การซื้อเพิ่มอีกสองครั้ง

ฟิลด์วันที่ของ T05-03วันที่ท้องถิ่นจำนวนวันถึง 2026-10-13สิ่งที่วัด
วันสั่งซื้อ2026-10-094เวลาตั้งแต่ซื้อ
วันส่งถึง2026-10-112เวลาตั้งแต่รับสินค้า
วันแก้ไขข้อมูล2026-10-121เวลาตั้งแต่แก้ไขข้อมูล

ทำไมวันอ้างอิงต้องตรึงไว้ ไม่ใช่เปลี่ยนตามวันปัจจุบัน

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

วิธีที่ถูกต้องคือกำหนดวันอ้างอิงเป็นวันตามปฏิทินที่ชัดเจน ซึ่งแทนจุดสิ้นสุดของช่วงวิเคราะห์ สำหรับคู่มือนี้ วันอ้างอิงคือ 13 ตุลาคม 2026 ในเขตเวลา Asia/Bangkok (UTC+7) วันนี้จะถูกกรอกไว้ครั้งเดียวในเซลล์ที่ตั้งชื่อไว้ และสูตร Recency ทุกสูตรในชีตจะอ้างถึงเซลล์นั้น ไม่มีอะไรเปลี่ยนจนกว่าคุณจะตั้งใจอัปเดตวันอ้างอิงแล้วคำนวณใหม่ นี่เป็นเพียงข้อตกลงเพื่อการสอนที่ตั้งขึ้นเพื่อให้ตัวอย่างนี้ทำซ้ำได้ ไม่ใช่คำยืนยันว่าเครื่องมือใด ๆ ที่คุณใช้วิเคราะห์ RFM จะตัดข้อมูลตามวันเดียวกัน คุณควรตรวจสอบตรรกะ cutoff ที่มีเอกสารอธิบายของแต่ละเครื่องมือแยกต่างหาก

ลูกค้า A: มี 3 ออเดอร์ แต่มีค่า Recency เดียว

ลูกค้า A เป็นตัวอย่างสมมติสำหรับการสอน วิธีคำนวณนี้ให้ทำซ้ำได้โดยใช้ข้อมูล 3 ช่องหลัก คือ รหัสลูกค้า รหัสออเดอร์ (เพื่อให้นับจำนวนออเดอร์ที่ไม่ซ้ำกันได้ถูกต้อง) และวันที่สั่งซื้อในรูปแบบวันที่อย่างเดียวตามเขตเวลาท้องถิ่น ห้ามนำวันที่ของลูกค้าคนอื่นเข้ามารวมในสูตร MAX สำหรับลูกค้า A

ลูกค้า A สั่งซื้อทั้งหมด 3 ครั้ง ออเดอร์ T05-01 สั่งเมื่อ 13 กรกฎาคม 2026 ออเดอร์ T05-02 สั่งเมื่อ 23 กันยายน 2026 และออเดอร์ T05-03 สั่งเมื่อ 9 ตุลาคม 2026 ดังนั้น วันที่สั่งซื้อล่าสุดคือ 9 ตุลาคม 2026 เมื่อนำไปเทียบกับวันที่อ้างอิง 13 ตุลาคม 2026 จะห่างกัน 4 วันตามปฏิทิน ตัวเลขเดียวนี้ — 4 — คือค่า Recency ดิบของลูกค้า A สำหรับหน้าต่างการวิเคราะห์นี้

รหัสออเดอร์ลูกค้าวันที่สั่งซื้อ (เวลาท้องถิ่น)จำนวนวันถึงวันที่อ้างอิง
T05-01ลูกค้า A (สมมติ)2026-07-1392
T05-02ลูกค้า A (สมมติ)2026-09-2320
T05-03ลูกค้า A (สมมติ)2026-10-094
— (ใช้ค่า MAX)—2026-10-094 ← ค่าอินพุตของ Recency

ผังเซลล์ในสเปรดชีต และสูตร DAYS

ผังเซลล์นี้ใช้ทำซ้ำค่า Recency ของลูกค้า A ใน Excel ให้ใส่ =DATE(2026,10,13) ใน B1 เพื่อเก็บค่าวันที่แบบตัวเลข ไม่ใช่ข้อความ รูปแบบเซลล์เป็นตัวกำหนดว่าจะมองเห็นเป็นวันที่ตามปฏิทินหรือเลขลำดับวันที่ ส่วน C2, C3 และ C4 ให้เก็บวันที่สั่งซื้อของลูกค้า A เป็นค่าวันที่แบบตัวเลขที่ไม่มีส่วนเวลา สูตรใน D1 คือ =DAYS($B$1,MAX(C2:C4))

ฟังก์ชัน DAYS รับอาร์กิวเมนต์ 2 ตัว โดยใส่ end_date ก่อน แล้วตามด้วย start_date เอกสารของ Microsoft ระบุว่า เมื่อทั้งสองอาร์กิวเมนต์เป็นเลขลำดับวันที่แบบตัวเลข DAYS จะคำนวณ end_date ลบ start_date ดังนั้นค่าวันที่อย่างเดียวที่ปรับเป็นจำนวนเต็มแล้วในตัวอย่างนี้จึงให้ผลต่างเป็นจำนวนวันเต็ม เมื่อ B1 = 13 ตุลาคม 2026 และ MAX(C2:C4) = 9 ตุลาคม 2026 ผลลัพธ์จึงเป็น 4 เครื่องหมายดอลลาร์ใน $B$1 ยึดตำแหน่งวันอ้างอิงเมื่อปรับสูตรไปใช้ที่อื่น สำหรับลูกค้ารายถัดไป ต้องใช้ช่วง MAX แยกที่มีเฉพาะวันที่ของลูกค้ารายนั้น อย่าคัดลอกช่วงที่ปะปนหลายลูกค้า

Microsoft ยังระบุพฤติกรรมข้อผิดพลาดไว้อีก 2 แบบที่ควรรู้ หากอาร์กิวเมนต์ตัวใดตัวหนึ่งเป็นข้อความที่ Excel แปลเป็นวันที่ไม่ได้ DAYS จะคืนค่า #VALUE! และหากอาร์กิวเมนต์ตัวใดตัวหนึ่งอยู่นอกช่วงเลขลำดับวันที่ที่ใช้ได้ DAYS จะคืนค่า #NUM! ทั้งสองกรณีตรวจจับได้ด้วย IFERROR และใช้เป็นสัญญาณคุณภาพข้อมูลได้ ซึ่งจะอธิบายในส่วนการตรวจสอบด้านล่าง

อ้างอิง: Microsoft Support: DAYS function — Excel

ปัญหาการแปลง timestamp ให้เป็นวันที่

ระบบจัดการออเดอร์มักเก็บเวลาเป็น timestamp แบบ UTC แทนที่จะเก็บตามเวลาท้องถิ่น เช่น timestamp 2026-10-12T18:30:00Z หมายถึงเวลา 18:30 ของวันที่ 12 ตุลาคมตาม UTC แต่เมื่อแปลงเป็น Asia/Bangkok (UTC+7) จะกลายเป็นเวลา 01:30 ของวันที่ 13 ตุลาคม 2026 ถ้าคุณหยิบวันที่ฝั่ง UTC คือ 12 ตุลาคมมาใช้เป็นวันที่สั่งซื้อโดยไม่แปลงก่อน คุณจะคำนวณ Recency ได้เท่ากับ 1 วัน แต่วันที่ท้องถิ่นที่ถูกต้องคือ 13 ตุลาคม ซึ่งให้ค่า Recency เท่ากับ 0 วันเมื่อเทียบกับวันที่อ้างอิงเดียวกัน ต่างกัน 1 วันเต็ม — มากพอจะทำให้ลูกค้าข้ามเส้นแบ่งของการให้คะแนนได้

ให้แปลงเขตเวลาก่อนแยกส่วนวันที่ และบันทึกเขตเวลาที่ใช้เพื่อทำซ้ำผลได้ หากเซลล์ต้นทางเป็นเลขลำดับวันที่พร้อมเวลาที่อยู่ใน UTC จริง ๆ ให้ใช้คอลัมน์ช่วย =INT(timestamp_cell+7/24) เพื่อเปลี่ยนเป็นวันที่ท้องถิ่นในกรุงเทพฯ สูตรนี้ใช้กับค่าตัวเลข ไม่ใช่สตริง ISO 8601 อย่าง 2026-10-12T18:30:00Z ต้องแปลงสตริงให้เป็นค่าเวลาที่ถูกต้องก่อน อย่าใช้ DAYS เพื่อแปลงเขตเวลา และอย่าเพิ่ม 7 ชั่วโมงซ้ำหากข้อมูลเป็นเวลาท้องถิ่นอยู่แล้ว

อีกปัญหาที่เกี่ยวข้องกันคือเลขลำดับวันที่ที่มีเศษของวันปนอยู่ หาก timestamp ดิบถูกเก็บใน Excel เป็นเลขทศนิยม เช่น 46,307.77 ซึ่งแทนวันที่พร้อมเศษเวลาบางส่วน DAYS จะนำเศษเหล่านั้นมาลบด้วยพร้อมกับส่วนวันที่ และอาจไม่คืนค่าเป็นจำนวนเต็ม จึงควรแปลงอินพุตทั้งหมดให้เป็นเลขลำดับวันที่แบบจำนวนเต็มที่มีเฉพาะวันที่ก่อนให้สูตรทำงาน วิธีที่ปลอดภัยที่สุดคือใช้ INT(timestamp_cell) หลังจากบวกออฟเซ็ต UTC แล้ว จากนั้นตรวจสอบกับออเดอร์ตัวอย่างที่รู้วันท้องถิ่นแน่ชัดสักสองสามรายการ ว่าผลลัพธ์ตรงกับวันที่ที่คาดไว้ ก่อนรันการวิเคราะห์ทั้งชุด

ตรวจคุณภาพข้อมูลก่อนให้ MAX ทำงาน

ฟังก์ชัน MAX จะข้ามเซลล์ว่างไปแบบเงียบ ๆ ซึ่งอาจเป็นทั้งข้อดีและความเสี่ยง ขึ้นอยู่กับข้อมูลของคุณ หากลูกค้า A มีออเดอร์ที่ 4 แต่ช่องวันที่ว่างอยู่เพราะยังไม่ได้กรอก MAX(C2:C5) ก็ยังจะคืนค่าวันที่ที่มากที่สุดจาก 3 แถวที่มีข้อมูล โดยไม่แจ้งข้อผิดพลาดใด ๆ คุณจึงอาจไม่รู้เลยว่ามีแถวข้อมูลหายไป ควรเพิ่มการตรวจสอบด้วย COUNTBLANK(C2:C5) และตั้งธงลูกค้าที่จำนวนออเดอร์ในคอลัมน์วันที่ไม่ตรงกับจำนวนแถวที่ควรมี

วันที่ในอนาคตเป็นความเสี่ยงอีกแบบหนึ่ง ความผิดพลาดจากการคีย์ข้อมูลหรือบันทึกพรีออเดอร์อาจทำให้มีวันที่ที่มากกว่าวันที่อ้างอิง ซึ่งจะทำให้ค่า Recency ติดลบ ในบริบทการวิเคราะห์ส่วนใหญ่ ค่า Recency ติดลบไม่มีความหมาย วิธีเช็กง่าย ๆ คือ =IF(MAX(C2:C4)>$B$1, "FUTURE DATE — CHECK", DAYS($B$1,MAX(C2:C4))) สูตรนี้จะดักปัญหาไว้ก่อน ไม่ให้ไหลต่อไปสู่ขั้นตอนการให้คะแนน

อย่ารอให้สูตร DAYS($B$1,MAX(C2:C4)) แจ้งข้อผิดพลาดเพื่อหาวันที่ที่เก็บเป็นข้อความ MAX จะข้ามข้อความในช่วงเซลล์ที่อ้างถึง แม้ข้อความนั้นดูเหมือนวันที่หรือเป็น N/A ทำให้ DAYS ได้รับค่าตัวเลขที่ดูปกติได้ ก่อนใช้ MAX ให้ตรวจ =COUNT(C2:C4) เทียบกับ =ROWS(C2:C4) สำหรับสามแถวนี้ ทั้งสองค่าต้องเป็น 3 เพราะใบงานกำหนดให้ทุกเซลล์เป็นวันที่แบบตัวเลข หากไม่เท่ากัน ให้ตรวจเซลล์ว่างหรือข้อความก่อนคำนวณ IFERROR จับข้อผิดพลาดของสูตรได้ แต่จับข้อความที่ MAX ข้ามไปแล้วไม่ได้

สุดท้าย ให้ยืนยันว่าช่วงวันที่ใน C2:C4 เป็นของลูกค้า A เท่านั้น ในไฟล์ส่งออกดิบที่มีออเดอร์ของหลายลูกค้าเรียงต่อกัน มักพลาดได้ง่ายจากการเลือกช่วงข้อมูลที่กินเลยไปถึงลูกค้าถัดไป หาก MAX ไปทำงานบนช่วงที่ปะปนหลายลูกค้า ผลลัพธ์จะผิดทั้งสองฝั่ง ควรใช้ตารางช่วยหรือ MAXIFS เพื่อจำกัดช่วงวันที่ให้เหลือเฉพาะรหัสลูกค้าหนึ่งรายก่อนคำนวณ Recency

อ้างอิง: Microsoft: ฟังก์ชัน MAX · Microsoft: ฟังก์ชัน COUNT

จำนวนวันบอกอะไรได้ และบอกอะไรไม่ได้

ค่าอินพุต Recency ของลูกค้า A คือ 4 วันตามปฏิทิน ตัวเลขดิบนี้เพียงอย่างเดียว ยังไม่สามารถสร้างคะแนน RFM หรือจัดลูกค้า A เข้าเซกเมนต์ใดได้ การให้คะแนนต้องมีอีกขั้นตอนแยกต่างหาก คือเปรียบเทียบจำนวนวันดิบนี้กับการกระจายของค่า Recency ของลูกค้าทั้งหมดในช่วงวิเคราะห์ แล้วจึงแบ่งการกระจายนั้นออกเป็นควอร์ไทล์หรือช่วงอื่น ๆ CasperBrain ใช้ 4 ควอร์ไทล์ โดยติดป้าย 1 ถึง 4 และควอร์ไทล์ 1 หมายถึงลูกค้าที่ซื้อล่าสุด ส่วนควอร์ไทล์ 4 หมายถึงลูกค้าที่ห่างจากการซื้อมากที่สุด ดังนั้น 4 วันจะไปอยู่ควอร์ไทล์ 1 หรือไม่ ขึ้นอยู่ทั้งหมดว่าลูกค้าฐานที่เหลือมีลักษณะอย่างไร อย่าระบุควอร์ไทล์จากตัวอย่างลูกค้ารายเดียว เพราะจำนวนวันดิบนี้เพียงอย่างเดียวยังไม่พอ

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

แต่ละแพลตฟอร์มใช้กติกาการให้คะแนนไม่เหมือนกัน ตัวอย่างเช่น Dynamics 365 Commerce ใช้สเกล 1 ถึง 5 โดย 5 คือค่าความใหม่ล่าสุดที่ดีที่สุด ซึ่งเป็นทิศทางตรงข้ามกับควอร์ไทล์ 1 ของ CasperBrain เอกสารของ Microsoft ระบุชัดว่าลูกค้า 20 รายที่ซื้อล่าสุดจะได้คะแนน recency เท่ากับ 5 ถ้าคุณจะนำกติกาคะแนนหรือเกณฑ์แบ่งเซกเมนต์จากเครื่องมืออื่นมาใช้ ต้องตรวจให้แน่ใจก่อนว่าเลขฝั่งไหนคือ “ดีที่สุด” เพราะถ้าผสมคนละธรรมเนียมกัน เซกเมนต์จะกลับด้านทันที

อ้างอิง: Shopify: RFM Analysis — Definition and Segmentation Guide (2026) · Microsoft Learn: Set up RFM analysis — Dynamics 365 Commerce

ผังการตัดสินใจ: เลือกและบันทึกธรรมเนียมวันที่ที่คุณจะใช้

ขั้นตอนต่อไปนี้จะช่วยให้คุณมีวิธีที่ทำซ้ำได้ในการตัดสินใจเลือกฟิลด์วันที่ และบันทึกเหตุผลไว้ก่อนเริ่มเขียนสูตรใด ๆ

ขั้นตอนที่ 1: ระบุฟิลด์วันที่ทุกฟิลด์ที่มีอยู่ในไฟล์ส่งออกคำสั่งซื้อของคุณ ตัวเลือกที่พบบ่อยคือ created_at, shipped_at, delivered_at และ updated_at จดให้ชัดว่าแต่ละฟิลด์หมายถึงเหตุการณ์อะไรในภาษาง่าย ๆ

ขั้นตอนที่ 2: ถามให้ชัดว่าคุณต้องการให้ Recency สะท้อนเหตุการณ์ใด ถ้าคำตอบคือ “ลูกค้าตัดสินใจซื้อเมื่อไร” ให้ใช้วันที่สร้างคำสั่งซื้อ ถ้าคำตอบคือ “ลูกค้าได้รับสินค้าเมื่อไร” ให้ใช้วันที่จัดส่งถึงมือลูกค้า แต่ควรใช้ก็ต่อเมื่อฟิลด์นั้นมีข้อมูลครบทุกแถว และไม่ได้มาจากการสแกนของผู้ให้บริการขนส่งที่อาจอัปเดตย้อนหลัง

ขั้นตอนที่ 3: ตรวจสอบเขตเวลาของฟิลด์ผู้สมัครแต่ละฟิลด์ ถ้า timestamp ถูกเก็บเป็น UTC ให้บันทึก offset ที่ต้องใช้เพื่อแปลงเป็นวันที่ตามปฏิทินในเขตเวลาท้องถิ่นของคุณ และใช้วิธีแปลงนั้นอย่างสม่ำเสมอก่อนดึงเฉพาะส่วนวันที่

ขั้นตอนที่ 4: เขียนชื่อฟิลด์ที่เลือก วิธีแปลงเขตเวลา และวันที่อ้างอิง ไว้ในคอมเมนต์หรือแถวเอกสารกำกับที่ด้านบนของสเปรดชีต บันทึกนี้เองที่จะทำให้นักวิเคราะห์คนอื่น — หรือตัวคุณเองในอีกสามเดือนข้างหน้า — สามารถคำนวณค่าเดิมซ้ำได้แบบตรงกัน

ขั้นตอนที่ 5: รันการตรวจคุณภาพข้อมูลตามที่อธิบายไว้ในส่วนก่อนหน้า ก่อนคำนวณค่า Recency ใด ๆ แก้หรือทำเครื่องหมายข้อผิดพลาดให้เรียบร้อยก่อน อย่าปล่อยให้ข้อมูลผิดไหลเข้าไปใน MAX หรือ DAYS แบบเงียบ ๆ

ผังการตัดสินใจเลือกธรรมเนียมวันที่

กระบวนการ 5 ขั้นสำหรับเลือก แปลง ตรวจสอบ และบันทึกฟิลด์วันที่ที่จะใช้ใน Recency ต้องทำให้ครบทุกขั้นก่อนขยับไปขั้นถัดไป

  1. 01ไล่รายการฟิลด์วันที่

    สำรวจทุกคอลัมน์วันที่ในไฟล์ส่งออกของคุณ: วันที่สั่งซื้อ วันที่จัดส่ง วันที่แก้ไขข้อมูล และฟิลด์อื่น ๆ ที่มี

  2. 02เลือกเหตุการณ์

    ตัดสินใจว่า Recency ควรสะท้อนเหตุการณ์ใดของลูกค้า — ความตั้งใจซื้อ (วันที่สั่งซื้อ) หรือการได้รับสินค้า (วันที่จัดส่ง) — และตัดฟิลด์วันที่เชิงแอดมินออก

  3. 03ปรับให้เป็นเขตเวลาเดียวกัน

    แปลง timestamp แบบ UTC ให้เป็นวันที่ตามปฏิทินท้องถิ่นด้วย offset ที่บันทึกไว้ ก่อนดึงค่าแบบวันที่ล้วน

  4. 04รันการตรวจคุณภาพ

    ทำเครื่องหมายวันที่ว่าง วันที่อนาคต ข้อความที่แปลงวันที่ไม่ได้ และแถวที่คอลัมน์วันที่เป็นของลูกค้าคนอื่น

  5. 05บันทึกและตรึงค่าอ้างอิง

    บันทึกชื่อฟิลด์ที่เลือก offset และวันที่อ้างอิงไว้ในสเปรดชีต ป้อนวันที่อ้างอิงเป็น DATE(yyyy,mm,dd) ไม่ใช่ =TODAY()

วิธีแก้ปัญหาข้อผิดพลาดที่พบบ่อย

หากส่งอาร์กิวเมนต์ข้อความให้ DAYS โดยตรง Excel จะลองแปลข้อความนั้นด้วย DATEVALUE และคืนค่า #VALUE! เมื่อแปลเป็นวันที่ที่ใช้ได้ไม่ได้ ข้อความที่แปลเป็นวันที่ได้จึงไม่ได้ผิดเสมอไป ให้ตรวจ locale และลำดับวัน/เดือน สำหรับใบงานนี้ควรแปลงเซลล์วันที่ทุกช่องให้เป็นค่าตัวเลขก่อน แล้วตรวจด้วย ISNUMBER() การเปลี่ยนรูปแบบเซลล์หรือการจัดชิดซ้ายขวาไม่ได้ยืนยันชนิดของค่าที่เก็บอยู่ และ MAX อาจข้ามข้อความโดยไม่แจ้งข้อผิดพลาด

DAYS คืนค่าเป็นเลขติดลบ อาจเกิดจากสลับตำแหน่งอาร์กิวเมนต์ end_date กับ start_date หรือมีวันที่ในอนาคตหลุดเข้ามาในข้อมูล จำไว้ว่าสูตร DAYS(end_date, start_date) คือเอา end ลบ start ถ้าวันที่อ้างอิงเป็น end_date แต่วันที่สั่งซื้อครั้งล่าสุดของลูกค้าอยู่หลังวันที่อ้างอิง ผลลัพธ์จะติดลบ ให้แก้ข้อมูลหรือเพิ่มเงื่อนไข IF ตามที่อธิบายไว้ในส่วนการตรวจคุณภาพข้อมูล

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

ค่า Recency ต่างกันเล็กน้อยระหว่างการรันบนข้อมูลชุดเดิม สาเหตุที่พบบ่อยที่สุดคือใช้ =TODAY() เป็นวันที่อ้างอิง แทนที่จะตรึงไว้ด้วยสูตร DATE() แบบระบุวันชัดเจน เปลี่ยนเป็นวันที่แบบ explicit แล้วค่าจะนิ่ง

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

อ้างอิง: Microsoft Support: DAYS function — Excel · Microsoft: ฟังก์ชัน MAX

ข้อจำกัด และสิ่งที่คู่มือนี้ยังไม่ครอบคลุม

คู่มือนี้โฟกัสเฉพาะองค์ประกอบ Recency ของ RFM และเจาะเฉพาะขั้นเลือกฟิลด์วันที่กับขั้นนับจำนวนวันเท่านั้น ยังไม่ครอบคลุมวิธีแปลงจำนวนวันที่ได้ไปเป็นคะแนนแบบควอร์ไทล์ วิธีจัดการคำสั่งซื้อที่คืนเงินหรือยกเลิก หรือวิธีกำหนดช่วงวิเคราะห์สำหรับ Frequency และ Monetary แต่ละเรื่องมีชุดการตัดสินใจของตัวเอง และควรบันทึกเอกสารแยกกัน

ตัวอย่างคำนวณนี้ใช้ลูกค้าสมมติ 1 รายที่มี 3 คำสั่งซื้อ แต่ข้อมูลจริงมักมีความซับซ้อนเพิ่มขึ้น เช่น ลูกค้าที่มีคำสั่งซื้อหลายร้อยรายการจน MAX ดูชัดอยู่แล้ว แต่คุณภาพของฟิลด์วันที่แตกต่างกันทีละแถว ลูกค้าที่สั่งซื้อก่อนเที่ยงคืน UTC เพียงเล็กน้อยจนวันที่ท้องถิ่นกลายเป็นวันถัดไป หรือ ลูกค้าที่ปรากฏภายใต้หลายรหัสเพราะบางครั้งซื้อแบบ guest checkout ปัญหาเหล่านี้ไม่มีข้อไหนที่สูตร DAYS จะแก้ได้ลำพัง

วันที่อ้างอิง 13 ตุลาคม 2026 เป็นตัวเลือกเพื่อการสอน ใช้เพื่อให้ตรวจเลขคณิตในคู่มือนี้ได้ ไม่ใช่การอ้างว่าเป็นตรรกะ cutoff ปัจจุบันของแอปใด ๆ เครื่องมือแต่ละตัวที่คุณใช้วิเคราะห์ RFM จะจัดการวันที่อ้างอิงของตัวเองตามพฤติกรรมที่เอกสารของเครื่องมือนั้นระบุไว้ ซึ่งคุณควรตรวจสอบก่อนนำผลไปใช้งาน

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

แหล่งข้อมูลและวิธีจัดทำ

ตัวอย่างในบทความเป็นข้อมูลสมมติ ไม่มีข้อมูลลูกค้าจริง บทความจัดทำโดยทีม CasperBrain โดยใช้ AI ช่วยร่าง ตรวจข้อเท็จจริงและภาษาก่อนเผยแพร่