วิธีการใช้ Left,Mid,Right เพื่อดึงค่าออกมาโดย Left ดึงจากทางซ้าย
> ,Mid ก็ดึงจากทางซ้ายแต่มีการเว้นระยะก่อนดึง
-- > ,Right ดึงจากทางขวา
<ตัวอย่าง ตัวแปล ABC มีค่า 123456789
Left([ABC ],2) = 12 / ดึงค่าจากซ้ายสุดมา 2ตัว
Mid([ABC ],3,2) = 34 / ดึงค่ามาโดยตัวแรกคือตัวที่ 3นับจากซ้ายแล้วนับไปต่ออีก 2ตัว
Mid([ABC ],5,3) = 567 / ดึงค่ามาโดยตัวแรกคือตัวที่ 5นับจากซ้ายแล้วนับไปต่ออีก 3ตัว
Right([ABC ],2) = 89 / ดึงค่าจากขวาสุดมา 2ตัว
ตัวอย่าง ท่าน PNR จะใช้ Cdate() เพื่อแปลงตัวเลขให้เป็นวันที่ แต่โดยปรกติตัวแปลวันที่จะมี
/ คั่นอยู่ท่านจึงใช้ Left,Mid,Right เพื่อแยกตัวแปลแล้วใส่ & "/" & เข้าไปคั่นใว้ดังนี้
ตัวแปล [วันที่ วว/ดด/ปป] เก็บค่า 010164 เมื่อใช้
Left([วันที่ วว/ดด/ปป],2) & "/" & Mid([วันที่ วว/ดด/ปป],3,2) & "/" & Right([วันที่ วว/ดด/ปป],2) =
01/01/64 แปลงเสร็จระบบก็ยังคือเป็นข้อความธรรมดาแค่มี
/ คั่นอยู่แต่สามารถเอาไปให้ Cdate() บอกว่ามันคือวันที่โดย Cdate(
ค่อม...ใว้) (จาก 010164 ตอนนี้ระบบมองออกแล้วว่าเป็นวันที่1 เดือน1 ปี64)
ที่นี้มีต่ออีกว่าถ้าอยากให้มันแสดงผลออกมาเป็นอย่างอื่นเช่น 1 มกราคม 64 , มกราคม 2564 , 01/01/64 อีกที่ล่ะได้ใหม?
คำตอบคือได้โดยใช้ Format() เพื่อนำค่าออกมาแสดงผลในรูปแบบที่เราต้องการเพราะจากที่เราใช้ Cdate() ไปนั้นระบบรู้แล้วว่าตัวไหนคือวันเดือนปีเช่น
Format(CDate(.....),"mmm yy") = ม.ค. 64
Format(CDate(.....),"mmmm yyyy") = มกราคม 2564
Format(CDate(.....),"dd/mm/yy") = 01/01/64
แบบงวดภาษี มกราคม 64
= "งวดภาษีเดือน" & " " & Format(CDate(Left([วันที่ วว/ดด/ปป],2) & "/" & Mid([วันที่ วว/ดด/ปป],3,2) & "/" & Right([วันที่ วว/ดด/ปป],2)),"mmmm yy")
แบบงวดภาษี มกราคม 2564
="งวดภาษีเดือน" & " " & Format(CDate(Left([วันที่ วว/ดด/ปป],2) & "/" & Mid([วันที่ วว/ดด/ปป],3,2) & "/" & Right([วันที่ วว/ดด/ปป],2)),"mmmm yyyy")
สรุปขั้นตอน*โดยต้องใช้ให้ครบ
1.ใช้ Left,Mid,Right หั่นตัวเลขออกมาเป็นส่วนๆแล้วใส่
/ เข้าไปคั่นใว้
2.ใช้ Cdate() แปลงค่าจากข้อความ,ตัวเลขธรรมดาให้ระบบคิดว่าเป็นวันที่
(โดยข้อความต้องมี / คั่นอยู่ก่อนแปลง)3.ใช้ Format() นำค่าออกมาแสดงผลในรูปแบบที่เราต้องการเช่น d m yy , dd/mm/yy , mmmm yyyy , mmm d yyyy เป็นต้น
*หมายเหตุ สิ่งที่จะเอาไปให้ Cdate() แปลงเป็นระบบวันที่ได้ดีควรจะต้องมี3ส่วนดังนั้นจากที่
ดด/ปป ใน criteria เป็น 0164 ผลลัพธ์ ได้ มิถุนายน 2443
ผมจึงใส่วันที่ 01 เพิ่มเข้าไปให้ Cdate() ทำงานได้อย่างเต็มรูปแบบ
="งวดภาษีเดือน " & Format(CDate("01/" & Left([งวดภาษี ดด/ปป],2) & "/" & Right([งวดภาษี ดด/ปป],2)),"mmmm yyyy")