EXCEL TOOLS
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
[code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)andyliu wrote:สวัสดีครับ ไม่ได้เข้ามาตั้งนาน แต่ก็ยังคิดถึงกูรูทุกท่านนะครับ
วันนี้มีเรื่องรบกวนเช่นเคยครับ
เรื่องการลงเวลาแบบนับ 8 ชั่วโมงครับ
ไม่ทราบว่าต้องเพิ่มสูตรอย่างไรครับ ผมมีแบบฟอร์มตามที่แนบมานี้นะครับ
อยากให้มันสรุปเวลาให้ครับ คิดจนปวดหัวแล้ว (สูตรในตารางที่แนบมา ต้องบอกก่อนเลยนะครับว่า พนักงานคนเก่าเขาทำไว้ครับ)
ขอขอบพระคุณล่วงหน้าเลยก็แล้วกันนะครับ วานกูรูช่วยทีครับ
andyliu wrote:ขอบคุณมากๆ ครับ แต่ผมลองดัดแปลงทำลองดูแล้ว ยังพบข้อผิดพลาดเกิดขึ้นครับ คือ ถ้าไม่มีข้อมูลการลงเวลาเข้า แต่ปรากฏเวลาออก สูตรมันยังสรุปเป็น ไม่ปรากฏการสแกนเข้า-ออก ครับ ต้องทำอย่างไรครับ หรือต้องเขียนสูตรอะไรเข้าไปใหม่ครับ รบกวนอีกครั้งนะครับ ความฝันผมใกล้จะเป็นจริงแล้ว
-- ผมแนบไฟล์เดิมนะครับ แต่เปลี่ยนสีฟอนต์ตรงแถวที่เกิดปัญหาขึ้นครับ (เป็นสีน้ำเงิน) ท่านจะได้สังเกตได้ง่ายครับ รบกวนอีกครั้งครับ
andyliu wrote:ขอบคุณครับ แต่ก็ยังมีจุดที่ยังเป็นปัญหาอยู่นะครับ ตรงวงกลมสีแดงที่วงไว้ครับ จะแก้อย่างไรครับ รบกวนอีกครั้งนะครับ เพื่อจะได้สมบูรณ์ขึ้นครับ![]()
ไฟล์แนบนะครับ
Code: Select all
=TIME(LEFT(IF(LEN(SUBSTITUTE(C3,".",""))=1,0&SUBSTITUTE(C3,".","")&0&0,IF(LEN(SUBSTITUTE(C3,".",""))>3,SUBSTITUTE(C3,".",""),IF(LEN(SUBSTITUTE(C3,".",""))=3,0&SUBSTITUTE(C3,".",""),0&SUBSTITUTE(C3,".","")&0))),2)*1,RIGHT(IF(LEN(SUBSTITUTE(C3,".",""))=1,0&SUBSTITUTE(C3,".","")&0&0,IF(LEN(SUBSTITUTE(C3,".",""))>3,SUBSTITUTE(C3,".",""),IF(LEN(SUBSTITUTE(C3,".",""))=3,0&SUBSTITUTE(C3,".",""),0&SUBSTITUTE(C3,".","")&0))),2)*1,0)
Code: Select all
=TIME(LEFT(IF(LEN(SUBSTITUTE(D3,".",""))=3,SUBSTITUTE(D3,".","")&0,IF(LEN(SUBSTITUTE(D3,".",""))=2,SUBSTITUTE(D3,".","")&0&0,IF(LEN(SUBSTITUTE(D3,".",""))=1,0&SUBSTITUTE(D3,".","")&0&0,SUBSTITUTE(D3,".","")))),2)*1,RIGHT(IF(LEN(SUBSTITUTE(D3,".",""))=3,SUBSTITUTE(D3,".","")&0,IF(LEN(SUBSTITUTE(D3,".",""))=2,SUBSTITUTE(D3,".","")&0&0,IF(LEN(SUBSTITUTE(D3,".",""))=1,0&SUBSTITUTE(D3,".","")&0&0,SUBSTITUTE(D3,".","")))),2)*1,0)
Code: Select all
=IF(ISERROR("08:00"-(F3-E3)),IF(AND(COUNT($C3:$D3)=1,MATCH(1,IF(ISTEXT($C3:$D3),1),0)=1),"ไม่ปรากฏการสแกนเข้า",IF(AND(COUNT($C3:$D3)=0,MATCH(1,IF(ISTEXT($C3:$D3),1),0)=1),"ไม่ปรากฏการสแกนเข้า-ออก","ไม่ปรากฏการสแกนออก")),IF("08:00"-(F3-E3)=0,"","08:00"-(F3-E3)))
andyliu wrote:![]()
![]()
![]()
![]()
ขอบคุณมากๆ เลยครับ อย่าเพิ่งหงุดหงิดนะครับ เพราะผมเจอปัญหาจากสูตรอีกแล้วครับ (ตัวหนังสือสีแดง)
คือ เมื่อเรากำหนดเงื่อนไขว่าให้เริ่มนับเวลาเข้าตอน 8.00 น. เวลาออกเวลาแรกก็ควรจะเป็น 16.00 น. แต่ในสูตรยังผิดอยู่ครับ รบกวนอีกครั้งนะครับ ผมเองไม่มีความรู้เรื่องสูตรพวกนี้มาก จะรู้เฉพาะสูตรง่ายๆ จำพวก sum ประมาณนี้ครับ ที่รีบเพราะต้องการเอามาใช้คำนวณเวลาทำงานของพนักงาน เพราะหัวหน้าจะทดลองใช้ระบบนับ 8 ชั่วโมงครับ
ไฟล์แนบนะครับ
Code: Select all
=IF(TIME(LEFT(IF(LEN(SUBSTITUTE(C3,".",""))=1,0&SUBSTITUTE(C3,".","")&0&0,IF(LEN(SUBSTITUTE(C3,".",""))>3,SUBSTITUTE(C3,".",""),IF(LEN(SUBSTITUTE(C3,".",""))=3,0&SUBSTITUTE(C3,".",""),0&SUBSTITUTE(C3,".","")&0))),2)*1,RIGHT(IF(LEN(SUBSTITUTE(C3,".",""))=1,0&SUBSTITUTE(C3,".","")&0&0,IF(LEN(SUBSTITUTE(C3,".",""))>3,SUBSTITUTE(C3,".",""),IF(LEN(SUBSTITUTE(C3,".",""))=3,0&SUBSTITUTE(C3,".",""),0&SUBSTITUTE(C3,".","")&0))),2)*1,0)<"08:00:00"*1,"08:00:00"*1,TIME(LEFT(IF(LEN(SUBSTITUTE(C3,".",""))=1,0&SUBSTITUTE(C3,".","")&0&0,IF(LEN(SUBSTITUTE(C3,".",""))>3,SUBSTITUTE(C3,".",""),IF(LEN(SUBSTITUTE(C3,".",""))=3,0&SUBSTITUTE(C3,".",""),0&SUBSTITUTE(C3,".","")&0))),2)*1,RIGHT(IF(LEN(SUBSTITUTE(C3,".",""))=1,0&SUBSTITUTE(C3,".","")&0&0,IF(LEN(SUBSTITUTE(C3,".",""))>3,SUBSTITUTE(C3,".",""),IF(LEN(SUBSTITUTE(C3,".",""))=3,0&SUBSTITUTE(C3,".",""),0&SUBSTITUTE(C3,".","")&0))),2)*1,0))
ฟอรั่มนี้ ไม่จำกัดการถามครับ ถามได้เท่าที่ต้องการ ผู้ตอบทุกคนยินดีตอบจนกว่าจะหมดปัญหาครับอย่าเพิ่งหงุดหงิดนะครับ
andyliu wrote:ขอบคุณมากๆ เลยนะครับ แต่อย่างว่าครับ เงื่อนไขเวลามันเยอะ ฟังก์ชั่น IF ก็ต้องเยอะตามไปด้วย ผมเองไม่มีปัญญาทำได้แน่นอนครับ
ในไฟล์ที่แนบมายังพบข้อบกพร่องในช่องสรุปผลนะครับ ถ้าคีย์ 10.00 น. เป็นเวลาเข้า ขาออกคีย์ 16.01 น. มันจะฟ้องแค่ "มาปฏิบัติราชการหลัง 9.00 น." ครับ
ซึ่งอันที่จริงมันควรจะขึ้นด้วยว่า "ออกก่อน กี่นาที" ครับ รบกวนอีกครั้งครับ (ไม่รู้ครั้งที่เท่าไหร่แล้วนะ อิอิอิ) อันอื่นดูแล้วก็น่าจะโอเคครับ ไว้ผมทดลองคีย์ข้อมูลใหม่ๆ
เข้าไป หากมีปัญหาจะนำมาโพสลงใหม่ครับ
ขอบคุณครับ
Code: Select all
=IF(ISERROR("08:00:00"-(F3-E3)),IF(AND(COUNT($C3:$D3)=1,MATCH(1,IF(ISTEXT($C3:$D3),1),0)=1),"ไม่ปรากฏการสแกนเข้า",IF(AND(COUNT($C3:$D3)=0,MATCH(1,IF(ISTEXT($C3:$D3),1),0)=1),"ไม่ปรากฏการสแกนเข้า-ออก","ไม่ปรากฏการสแกนออก")),IF(F3-E3>="08:00:00"*1,"08:00:00"*1,"08:00:00"-(F3-E3)))
Code: Select all
=IF(ISTEXT(G3),G3,IF(AND($E3>="08:00:00"+0,$E3<="09:00:00"+0,$G3="08:00:00"+0),1,IF(AND($E3>"09:00:00"+0,$E3<="10:00:00"+0,$G3="08:00:00"+0),2,IF(AND($E3>"09:00:00"+0,$E3<="10:00:00"+0,$G3<>"08:00:00"+0),3,IF(AND($E3>"10:00:00"+0,$G3="08:00:00"+0),4,IF(AND($E3>"10:00:00"+0,$G3<>"08:00:00"+0),5,6))))))
Code: Select all
=IF(ISTEXT($H3),$H3,IF($H3=1,"",IF($H3=2,"มาปฏิบัติราชการหลัง 9.00 น.",IF($H3=3,"มาปฏิบัติราชการหลัง 9.00 น. ออกก่อน"&" "&TEXT($G3,"HH:MM")&" "&"นาที",IF($H3=4,"ไม่อยู่ปฏิบัติราชการครึ่งวัน",IF($H3=5,"ไม่อยู่ปฏิบัติราชการครึ่งวัน ออกก่อน"&" "&TEXT($G3,"HH:MM")&" "&"นาที","ออกก่อน"&" "&TEXT($G3,"HH:MM")&" "&"นาที"))))))
ไม่ได้เก่งครับ เพิ่งคิดได้มากกว่าครับจากสูตรยาวๆ กลายเป็นสูตรสั้นๆ ทำได้ไง งง ยอมรับว่าเก่งมากครับ ไอสไตน์ จริงๆๆๆๆๆๆๆ ข้าน้อยซูฮก อยากเก่งได้สักเสี้ยวจริงๆ ไม่รู้จะเริ่มต้นยังไงดีกับสูตร ฟังก์ชั่น Excel นี่
นับถือ นับถือ และนับถือครับ
andyliu wrote:อ้อ ลืมถามครับ ในคอลัมภ์ I และ J มันต่างกันอย่างไรครับ (ต่างที่ตรงสูตร) หรือเอาไว้สำหรับตรวจสอบความถูกต้องครับ
อย่างไรก็ต้องขอชมนะครับว่า "เยี่ยมมากๆ เลย" ผมนับถือเป็นปรมาจารย์ของผมเลยหละครับคุณ bank9597
andyliu wrote:ประะทานโทษนะครับ excel ที่ผมใช้เป็นเวอร์ชัน 2010 แล้วนะครับ แสดงว่าไฟล์ที่คนเก่าทำไว้เป็นเวอร์ชันเก่าสิครับ
ต้องขอความรู้เพิ่มเดิมด้วยนะครับว่า 2010 กับ 2003 เงื่อนไขการใช้สูตรไม่เหมือนกันเหรอครับ
ปล. ตอนนี้ทดลองคีย์ข้อมูลบ้างแล้ว ยังไม่พบปัญหาครับ
ขอบคุณครับ