เพื่อมุ่งให้เกิดคุณภาพจากการอบรมสูงสุด Excel Expert Training ให้การอบรม Excel กลุ่มเล็กๆ ไม่เกิน 6 คนทุกคนสามารถเรียนรู้ Excel อย่างใกล้ชิด จะมาคนเดียวหรือมาเป็นกลุ่มแล้วนัดวันอบรมแบบส่วนตัวก็ได้ ผู้เข้าอบรมทุกคนสามารถติดตามเนื้อหาที่อบรมได้อย่างชัดเจนจากจอภาพด้านหน้าของตัวเอง
Page 1 of 2 12 LastLast
Results 1 to 10 of 11

Thread: แยกแยะ "วันเดือนปี" หรือ "ปีเดือนวัน"

  1. #1
    pigphong
    Guest

    แยกแยะ "วันเดือนปี" หรือ "ปีเดือนวัน"

    ผมมีลูกค้าอยู่สามรายโดยแต่ละรายใช้ format วันที่ต่างกันดังนี้ครับ
    ลูกค้าแรก ใช้แบบ 050310-1 หมายถึง (วัน)(เดือน)(ปีย่อ)-(ลำดับการสั่งซื้อ)
    ลูกค้าสอง ใช้แบบ 100305-1 หมายถึง (ปีย่อ)(เดือน)(วัน)-(ลำดับการสั่งซื้อ)
    ลูกค้าสาม ใช้แบบ 01-05032010 หมายถึง (ลำดับการสั่งซื้อ)-(วัน)(เดือน)(ปีเต็ม)
    ต้องการรวมข้อมูลทั้งสามโดยให้ format วันที่เป็นแบบเดียวกันคือ (วัน).(เดือน).(ปีเต็ม)
    โดยตัด(ลำดับการสั่งซื้อ)ออกไป 05.03.2010 มีวิธีการอย่างไรได้บ้างครับ

  2. #2
    gaka
    Guest
    ถ้าคำถามคือจะตัดลำดับการสั่งซื้อออกอย่างไร?
    คำตอบคือใช้ function mid() ครับ แต่ mid() จะต้องอาศัยลำดับอักษรที่ และความยาวที่ต้องการ
    ลอง=mid("01022010-1",1,8) แปลว่าเอาตั้งแต่ตัวที่ 1 ของข้อความ 01022010 แล้วนับไปอีก 8 ตัวออกมา
    แต่ถ้าคำถามว่ามีวิธีการอย่างไร นั้นคิดว่าคุณควรคลีนข้อมูลก่อนจะนำเข้า ไม่ว่าจะเป็น Excel(ชีตที่ใช้เก็บข้อมูลรวม)เอง หรือ ฐานข้อมูลก็ตาม จะต้องจัดประเภทข้อมูลให้สอดคล้องกับการนำไปใช้เสียก่อนอย่าคิดว่าเก็บไปก่อนแล้วจะใช้ค่อยไปจัดรูปแบบ ถ้าเป็นแบบนั้นความทุกข์จะถามหา เพราะเคยเจอแบบนั้นมาแล้วเหนื่อย
    ส่วนการจัดรูปแบบให้เป็น MM.DD.YYYY นั้นใช้ function text()
    เช่น =text(now(),"MM.DD.YYYY")

  3. #3
    อนุชาติ อาจคำไพ
    Guest
    ตามที่คุณ gaka แนะนำแหละครับ ถ้าไม่คลีนข้อมูลก่อนความทุกข์จะถามหา :wink:
    ผมลองสร้างสูตรขึ้นมาแต่ไม่แน่ใจว่าจะใช้ได้กับทุกกรณีหรือเปล่า ยังไงลองตรวจสอบดูอีกทีนะครับ

  4. #4
    pigphong
    Guest
    ส่วนการจัดรูปแบบให้เป็น MM.DD.YYYY นั้นใช้ function text()
    เช่น =text(now(),"MM.DD.YYYY")
    ผมไม่รู้ว่าเมื่อตัดมาแล้วจะใช้อะไรแยกได้ว่าเป็น ปีเดือนวัน หรือวันเดือนปี ครับ
    050310,
    100305,
    05032010
    ลองใช้ function text แล้วได้ออกมาแบบนี้ครับ
    05.03.2010,
    15.08.2174,
    #VALUE!
    ตามลำดับ

  5. #5
    pigphong
    Guest
    Quote Originally Posted by eddy2koonying View Post
    ตามที่คุณ gaka แนะนำแหละครับ ถ้าไม่คลีนข้อมูลก่อนความทุกข์จะถามหา :wink:
    ผมลองสร้างสูตรขึ้นมาแต่ไม่แน่ใจว่าจะใช้ได้กับทุกกรณีหรือเปล่า ยังไงลองตรวจสอบดูอีกทีนะครับ
    ผมลองดู file ที่แนบมาแล้ว เวลาปีเปลี่ยนไป แบบ ปีเดือนวัน 110305-1 จะได้ผลลัพท์ไม่ตรงครับ
    แต่สูตรของคุณ eddy2koonying อัจฉริยะจังเลย อยากเก่งสูตรแบบคุณบ้างต้องทำอย่างไรครับ

  6. #6
    vajra
    Guest
    Quote Originally Posted by eddy2koonying View Post
    ตามที่คุณ gaka แนะนำแหละครับ ถ้าไม่คลีนข้อมูลก่อนความทุกข์จะถามหา :wink:
    ผมลองสร้างสูตรขึ้นมาแต่ไม่แน่ใจว่าจะใช้ได้กับทุกกรณีหรือเปล่า ยังไงลองตรวจสอบดูอีกทีนะครับ
    ถ้าเป็น 100310-1
    แยกได้หรือไม่ครับ ว่าเป็นของ ลูกค้า1 หรือ ลูกค้า2
    อันที่จริงแล้ว Formatเดิมที่ต้องการจะเปลี่ยนได้ผูกไว้กับชื่อลูกค้าอยู่แล้ว ชื่อลูกค้าควรจะต้องถูกนำมาใส่ในสูตรด้วยครับ แล้วใช้ Function if() เพื่อแยกว่าจะใช้ Format อันไหน

  7. #7
    อนุชาติ อาจคำไพ
    Guest
    Quote Originally Posted by pigphong View Post
    ผมลองดู file ที่แนบมาแล้ว เวลาปีเปลี่ยนไป แบบ ปีเดือนวัน 110305-1 จะได้ผลลัพท์ไม่ตรงครับ
    แต่สูตรของคุณ eddy2koonying อัจฉริยะจังเลย อยากเก่งสูตรแบบคุณบ้างต้องทำอย่างไรครับ
    สูตรที่สร้างขึ้น ใช้ได้กับปี 2010 และจะพบปัญหาในกรณีที่วันที่เป็น 10XX10-X ครับ ในทางเดียวกัน ถ้าเป็นปี 2011 ต้องแก้ไขสูตรใหม่ ถึงจะใช้ได้ แต่ก็จะพบปัญหาเหมือนเดิมในกรณี 11XX11-X ครับ จะเป็นเช่นนี้เรื่อยๆครับ สรุปก็คือ สูตรนี้เกิดความคลาดเคลื่อนไม่เกิน 4% ในข้อมูลแต่ละปีครับ:rolleyes5:

  8. #8
    เอก
    Guest
    รูปแบบที่1และ2 นั้นคือปัญหาหลัก เพราะเราไม่สามารถรู้ได้เลยว่าเป็นรูปแบบ "วันเดือนปี" หรือ "ปีเดือนวัน" เว้นแต่เมื่อวันที่เกินวันที่ 12 ขึ้นไปแล้วเท่านั้น ดังนั้น คงต้องกรองข้อมูลเองก่อน ส่วนรูปแบบที่3 นั้นไม่ยาก

    ดังนั้น ถ้าต้องการรวมรูปแบบทั้ง3 ไว้ด้วยกัน โดยหลักการแล้ว เราสามารถใช้ฟังก์ชัน IF ตรวจสอบได้ แต่ตอนนี้ติดปัญหาที่สองรูปแบบแรกนั้น ไม่รู้จะตั้งเงื่อนไขอย่างไร (ลองดูสูตรของคุณ eddy แล้วพบว่า ถ้าเปลี่ยนปีไปแล้ว จะได้ผลลัพธ์ที่ผิดพลาด)

    ผมแนะนำว่าควรจะมีอีกคอลัมน์หนึ่ง เป็นตัวบอกว่า ข้อมูลนั้นๆ เป็นรูปแบบใด (โดยเฉพาะแบบแรกและแบบสอง) ผมจึงลองปรับตัวอย่างของคุณ eddy เสียใหม่ เพิ่มคอลัมน์กลุ่มเข้าไป แล้วใช้ฟังก์ชัน IF ตั้งเงื่อนไขตรวจสอบ โดยแปลงข้อมูลให้อยู่ในรูปแบบของ DATE แล้วตั้งค่า format cell ให้แสดงเป็น dd.mm.yyyy

  9. #9
    อนุชาติ อาจคำไพ
    Guest
    Quote Originally Posted by eddy2koonying View Post
    สูตรที่สร้างขึ้น ใช้ได้กับปี 2010 และจะพบปัญหาในกรณีที่วันที่เป็น 10XX10-X ครับ ในทางเดียวกัน ถ้าเป็นปี 2011 ต้องแก้ไขสูตรใหม่ ถึงจะใช้ได้ แต่ก็จะพบปัญหาเหมือนเดิมในกรณี 11XX11-X ครับ จะเป็นเช่นนี้เรื่อยๆครับ สรุปก็คือ สูตรนี้เกิดความคลาดเคลื่อนไม่เกิน 4% ในข้อมูลแต่ละปีครับ:rolleyes5:
    คิดไปคิดมาแล้ว ในกรณีข้างต้น ก็ยังสามารถแยกได้อยู่นะครับ เพราะเดือนอยู่ตรงกลาง ดังนั้นจึงไม่น่าจะเกิดความผิดพลาดจากสูตรครับ

  10. #10
    สมเกียรติ
    Guest
    Quote Originally Posted by pigphong View Post
    ผมมีลูกค้าอยู่สามรายโดยแต่ละรายใช้ format วันที่ต่างกันดังนี้ครับ
    ลูกค้าแรก ใช้แบบ 050310-1 หมายถึง (วัน)(เดือน)(ปีย่อ)-(ลำดับการสั่งซื้อ)
    ลูกค้าสอง ใช้แบบ 100305-1 หมายถึง (ปีย่อ)(เดือน)(วัน)-(ลำดับการสั่งซื้อ)
    ลูกค้าสาม ใช้แบบ 01-05032010 หมายถึง (ลำดับการสั่งซื้อ)-(วัน)(เดือน)(ปีเต็ม)
    ต้องการรวมข้อมูลทั้งสามโดยให้ format วันที่เป็นแบบเดียวกันคือ (วัน).(เดือน).(ปีเต็ม)
    โดยตัด(ลำดับการสั่งซื้อ)ออกไป 05.03.2010 มีวิธีการอย่างไรได้บ้างครับ
    เนื่องจากผู้ถามไม่ได้แนบแฟ้มมาด้วย จึงไม่สามารถรู้ว่าโครงสร้างข้อมูลของลูกค้าเก็บไว้แบบใด ถ้าแยกแถวชื่อลูกค้าตามรูปแบบวันที่ไว้ก็จะชัดว่าใครใช้รูปแบบวันที่แบบใด แต่ถ้าบันทึกเรียงชื่อลูกค้าไว้ในแถวเดียวกันและยังมีรูปแบบวันที่บันทึกไว้ต่างกันไปอีก ก็จะไม่สามารถใช้สูตรใดๆช่วยได้หรอกครับ ลองนึกดูว่าถ้ามีลูกค้านับพันราย คนเราจะมานั่งเสียเวลาเลือกสูตรให้เข้ากับลูกค้าแต่ละรายอย่างนั้นหรือ

    เว้นแต่ว่าคุณมีตารางแยกกลุ่มลูกค้าไว้ตามประเภทของรูปแบบวันที่ไว้ด้วยอีกตารางหนึ่ง

Similar Threads

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •