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

Thread: รบกวนขอสอบถามเกี่ยวกับเรื่องการแสดงวันเดือนปี

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    seal_true
    Guest

    รบกวนขอสอบถามเกี่ยวกับเรื่องการแสดงวันเดือนปี

    ผมรบกวนขอสอบถามเรื่องการแสดงผลของอายุของอุปกรณ์ โดยให้แสดงผลเป็น ปี เดือน วัน เช่น ซื้อวันที่ 01/01/2011 หาอายุ ณ วันที่ 02/02/2012 จะเท่ากับ 1 ปี 1 เดือน 1 วัน ไม่ทราบว่าผมจะต้องเขียนสูตรอย่างไร (โดยการแสดงผลนั้น ถ้าไม่ถึง ปี ให้แสดงผลแค่ เดือน วัน , ถ้าไม่ถึง เดือน ให้แสดงผลแค่ วัน)
    ** ขออภัยด้วยครับ ที่ผมไม่ได้แนบไฟล์มาให้ เนื่องจาก ไม่ทราบว่าจะเขียนอย่างไร **

  2. #2
    bank9597
    Guest
    :smile: ยังไงแนบไฟล์มาครับ ทำโจทย์และคำตอบที่ต้องการมาให้เห็น เพื่อความสะดวกในการตอบครับ

    คำถามดังกล่าวใช้ สูตร Datedif ได้ครับ ยกตัวอย่างเช่น

    A1 = 01/01/2011
    B1 = 02/02/2012
    C1 คีย์สูตร =DATEDIF(A1,B1,"Y")&" ปี "&DATEDIF(A1,B1,"YM")&" เดือน "&DATEDIF(A1,B1,"MD")&"วัน"

    คำตอบที่ได้ก็จะเป็น 1 ปี 1 เดือน 1วัน

  3. #3
    seal_true
    Guest
    ขอบคุณมากครับคุณ bank9597 ตอนนี้ผมใช้สูตร Datedif และทำได้แล้วครับ

  4. #4
    tradtrae
    Guest
    Quote Originally Posted by bank9597 View Post
    :smile: ยังไงแนบไฟล์มาครับ ทำโจทย์และคำตอบที่ต้องการมาให้เห็น เพื่อความสะดวกในการตอบครับ

    คำถามดังกล่าวใช้ สูตร Datedif ได้ครับ ยกตัวอย่างเช่น

    A1 = 01/01/2011
    B1 = 02/02/2012
    C1 คีย์สูตร =DATEDIF(A1,B1,"Y")&" ปี "&DATEDIF(A1,B1,"YM")&" เดือน "&DATEDIF(A1,B1,"MD")&"วัน"

    คำตอบที่ได้ก็จะเป็น 1 ปี 1 เดือน 1วัน
    ผมเพิ่ม IF เข้าไป เพื่อที่ว่า ถ้่าได้ 0 ปี หรือ 0 เดือน ค่าปี และ เดือน น่าจะไม่ต้องแสดง โดยใช้สูตรดังนี้

    =IF(DATEDIF(A1,B1,"Y") > 0, DATEDIF(A1,B1,"Y") &" ปี ",) & IF(DATEDIF(A1,B1,"YM") > 0, DATEDIF(A1,B1,"YM")&" เดือน ",) & DATEDIF(A1,B1,"MD")&"วัน"

  5. #5
    seal_true
    Guest
    ขอบคุณครับ คุณ tradtrae ผมได้ใช้ IF เช่นกัน แต่ปรับปรุงสูตรใหม่ จะต่างกันที่ วัน ครับ ดังนี้
    =IF(DATEDIF(A1,B1,"Y")>0,DATEDIF(A1,B1,"Y")&" ปี ",)&IF(DATEDIF(A1,B1,"YM")>0,DATEDIF(A1,B1,"YM")&" เดือน ",)&IF(DATEDIF(A1,B1,"MD")>0,DATEDIF(A1,B1,"MD")&" วัน","")

    เพราะจากการที่ลองทำ ตามที่คุณ tradtrae ให้มา เมื่อไหร่ วันที่จะหาอายุตรงกับ วันที่เริ่มต้น จะทำให้ เป็น 0 วัน และ สูตร If จะไม่ทำงานครับ
    ตามแนบครับ (ยังคงโชว์ 0 วัน) และเท่าที่ลองทำดูยังไม่พบความผิดปกติ (ทดสอบ วันที่ 29/02/2012 เทียบกับ วันที่ 29/02/2016)


  6. #6
    bank9597
    Guest
    :smile: ยินดีด้วยครับ

    แต่ตามที่คุณบอกว่า
    ถ้าไม่ถึง ปี ให้แสดงผลแค่ เดือน วัน , ถ้าไม่ถึง เดือน ให้แสดงผลแค่ วัน
    ตรงนี้ผมไม่สามารถแนะนำได้ครับ

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

  7. #7
    seal_true
    Guest
    ตอนนี้ผมก็กำลังประสบปัญหาในส่วนนี้อยู่เหมือนกันครับ แต่ก็พยายามหาแนวทางอื่นอยู่เหมือนกันครับ ถ้าทำได้ยังไง จะส่งข้อมูลไปให้ช่วยตรวจสอบอีกครั้งครับ

  8. #8
    bank9597
    Guest
    :smile: จากสูตร
    =IF(DATEDIF(A1,B1,"Y")>0,DATEDIF(A1,B1,"Y")&" ปี ",)&IF(DATEDIF(A1,B1,"YM")>0,DATEDIF(A1,B1,"YM")&" เดือน ",)&IF(DATEDIF(A1,B1,"MD")>0,DATEDIF(A1,B1,"MD")&" วัน","")
    สามารถใช้งานได้ครับ

    ส่วนเรื่องที่จะทำให้จำนวนวันตรงกับความจริง เป็นเรื่องยากที่สุดแล้วล่ะครับ

  9. #9
    สมเกียรติ
    Guest
    DateDif คำนวณค่าผิดในบางช่วง เช่น จาก 30/1/2012 - 1/3/2012
    ควรจะได้คำตอบ 1 เดือน 2 วัน
    แต่กลับหาคำตอบเท่ากับ 1 เดือนเท่านั้นครับ

    แนะนำให้เปลี่ยนไปใช้ DateDiff Addin ของ John Walkenbach จะให้คำตอบถูกต้องกว่าครับ
    http://www.excelexperttraining.com/e...n/datetime.xls

  10. #10
    seal_true
    Guest
    ขอบคุณครับ อาจารย์สมเกียรติ เบื้องต้นผมลองเปรียบเทียบวันที่ 30/01/2012 กับ 01/03/2012 ผลลัพท์ = 1 เดือน 2 วัน ครับ (แต่พอเปลี่ยนเป็นวันที่ 29/02/2012 กลับ = 28 วัน ** ไม่ยอมอ่านว่า 1 เดือน **) ผมเข้าใจว่าการใช้เงื่อนไขเกี่ยวกับวันที่นั้น เป็นอะไรที่ยุ่งยากมาก ตามที่คุณ bank9597 แนะนำ ซึ่งผมจะใช้ Datediff ในการสร้างข้อมูลแทนครับ , และจะลองหาวิธีอื่นๆมาทดลองทำครับ

    ขอขอบคุณอีกครั้งครับ คุณ bank9597 ,คุณ tradtrae และอาจารย์สมเกียรติ

Posting Permissions

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