:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

นับวันสายแบบมีเงื่อนไข

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
yangkodza
Bronze
Bronze
Posts: 372
Joined: Tue Feb 10, 2015 10:37 am
Excel Ver: 2021

นับวันสายแบบมีเงื่อนไข

#1

Post by yangkodza »

นับสาย.PNG
จากภาพประกอบ อยากนับวันสาย โดยระบุเวลาดังนี้
คนที่ไม่อยู่่เวร มาทำงาน 7.15 น. ขึ้นไป สาย
ส่วนคนที่เวร มาทำงาน 7.00 น. ขึ้นไป สาย
โดยอ้างอิงกับ แผ่นงาน วันเวร
และให้แสดงผลการนับว่า สายกี่ครั้ง ที่เซลล์ AJ8 ใน แผ่นงานรายงานการมาทำงาน



นับวันสาย.xlsx
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30747
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: นับวันสายแบบมีเงื่อนไข

#2

Post by snasui »

:D ตัวอย่างสูตรที่เซลล์ AJ8 ครับ

=LET(day,LEFT($E$7:$AI$7,FIND(".",$E$7:$AI$7)),tran,IF(ISNUMBER(LEFT($E8:$AI8)+0),LEFT($E8:$AI8,5)),dth,INDEX(day,{2,3,4,5,6}),fdty,INDEX(วันเวร!$C$2:$G$113,MATCH("*"&$C8,TRIM(วันเวร!$B$2:$B$113),0),0),daydty,ISNUMBER(MATCH(day,IF(ISTEXT(fdty),dth),0)),rsc,SUM(IFERROR(daydty/(tran+0>="7:00"+0),0)),nrsc,SUM(IFERROR((1-daydty)/(tran+0>="7:15"+0),0)),rsc+nrsc)

Enter > Copy ลงด้านล่าง
yangkodza
Bronze
Bronze
Posts: 372
Joined: Tue Feb 10, 2015 10:37 am
Excel Ver: 2021

Re: นับวันสายแบบมีเงื่อนไข

#3

Post by yangkodza »

snasui wrote: Sat Jan 28, 2023 5:42 am :D ตัวอย่างสูตรที่เซลล์ AJ8 ครับ

=LET(day,LEFT($E$7:$AI$7,FIND(".",$E$7:$AI$7)),tran,IF(ISNUMBER(LEFT($E8:$AI8)+0),LEFT($E8:$AI8,5)),dth,INDEX(day,{2,3,4,5,6}),fdty,INDEX(วันเวร!$C$2:$G$113,MATCH("*"&$C8,TRIM(วันเวร!$B$2:$B$113),0),0),daydty,ISNUMBER(MATCH(day,IF(ISTEXT(fdty),dth),0)),rsc,SUM(IFERROR(daydty/(tran+0>="7:00"+0),0)),nrsc,SUM(IFERROR((1-daydty)/(tran+0>="7:15"+0),0)),rsc+nrsc)

Enter > Copy ลงด้านล่าง
ขอบคุณมากครับ ตรงตามที่ต้องการเลย
แต่แอบแปลกใจถึงที่มาที่ไป แต่เกรงใจไม่กล้าถามครับ :D
User avatar
snasui
Site Admin
Site Admin
Posts: 30747
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: นับวันสายแบบมีเงื่อนไข

#4

Post by snasui »

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

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

ไวยากรณ์ของ Let คือ

=let(name1,name_value1,calculation_or_name2,name_value2,...)

name1 คือชื่อของสูตร
name_value1 คือสูตรของ name1

จะใช้เป็นชุด ๆ ไปเช่นนี้จนครบทุกชุดที่ต้องการ โดยชุดหลังสุดคือคำตอบที่ต้องการแสดงในเซลล์

จากสูตร

=LET(day,LEFT($E$7:$AI$7,FIND(".",$E$7:$AI$7)),tran,IF(ISNUMBER(LEFT($E8:$AI8)+0),LEFT($E8:$AI8,5)),dth,INDEX(day,{2,3,4,5,6}),fdty,INDEX(วันเวร!$C$2:$G$113,MATCH("*"&$C8,TRIM(วันเวร!$B$2:$B$113),0),0),daydty,ISNUMBER(MATCH(day,IF(ISTEXT(fdty),dth),0)),rsc,SUM(IFERROR(daydty/(tran+0>="7:00"+0),0)),nrsc,SUM(IFERROR((1-daydty)/(tran+0>="7:15"+0),0)),rsc+nrsc)

ชุดที่ 1 คือ day,LEFT($E$7:$AI$7,FIND(".",$E$7:$AI$7)) เป็นการตัดชื่อวันมาแสดง สามารถทดสอบโดยการเปลี่ยนชุดสุดท้ายในสูตรด้านบนคือ rsc+nrsc เป็น day แล้วสังเกตดูผล

ชุดที่ 2 คือ tran,IF(ISNUMBER(LEFT($E8:$AI8)+0),LEFT($E8:$AI8,5)) เป็นการตัดเอาเวลาเข้างานในแต่ละบรรทัดมาแสดง สามารถทดสอบโดยการเปลี่ยนชุดสุดท้ายในสูตรด้านบนคือ rsc+nrsc เป็น tran แล้วสังเกตดูผล

ชุดที่ 3 คือ dth,INDEX(day,{2,3,4,5,6}) เป็นการสร้างหัวคอลัมน์ให้รองรับข้อมูลของชีต วันเวร สามารถทดสอบโดยการเปลี่ยนชุดสุดท้ายในสูตรด้านบนคือ rsc+nrsc เป็น dth แล้วสังเกตดูผล

ชุดที่ 4 คือ fdty,INDEX(วันเวร!$C$2:$G$113,MATCH("*"&$C8,TRIM(วันเวร!$B$2:$B$113),0),0) เป็นการหาว่ารายชื่อพนักงานในบรรทัดนั้น ๆ หยุดในวันใดบ้าง สามารถทดสอบโดยการเปลี่ยนชุดสุดท้ายในสูตรด้านบนคือ rsc+nrsc เป็น fdty แล้วสังเกตดูผล

ชุดที่ 5 คือ daydty,ISNUMBER(MATCH(day,IF(ISTEXT(fdty),dth),0)) เป็นการหาว่าพนักงานในบรรทัดนั้น ๆ หยุดวันไหนบ้าง สามารถทดสอบโดยการเปลี่ยนชุดสุดท้ายในสูตรด้านบนคือ rsc+nrsc เป็น daydty แล้วสังเกตดูผล

ชุดที่ 6 คือ rsc,SUM(IFERROR(daydty/(tran+0>="7:00"+0),0)) เป็นการหาว่าพนักงานในบรรทัดนั้น ๆ ที่มีวันเวรเข้าสายกี่วัน สามารถทดสอบโดยการเปลี่ยนชุดสุดท้ายในสูตรด้านบนคือ rsc+nrsc เป็น rsc แล้วสังเกตดูผล

ชุดที่ 7 คือ nrsc,SUM(IFERROR((1-daydty)/(tran+0>="7:15"+0),0)) เป็นการหาว่าพนักงานในบรรทัดนั้น ๆ ที่ไม่มีวันเวรเข้าสายกี่วัน สามารถทดสอบโดยการเปลี่ยนชุดสุดท้ายในสูตรด้านบนคือ rsc+nrsc เป็น nrsc แล้วสังเกตดูผล

ตัวสุดท้ายคือ rsc+nrsc เป็นผลลัพธ์ เป็นการนำผลลัพธ์ของ rsc และ nrsc มารวมกันครับ
yangkodza
Bronze
Bronze
Posts: 372
Joined: Tue Feb 10, 2015 10:37 am
Excel Ver: 2021

Re: นับวันสายแบบมีเงื่อนไข

#5

Post by yangkodza »

snasui wrote: Sat Jan 28, 2023 11:56 am :D เนื่องจากข้อมูลจัดเก็บในลักษณะที่เป็นอุปสรรคต่อการหาคำตอบ ยกตัวอย่างเช่น
  • ชื่อพนักงานทั้งสองชีตเขียนไว้ไม่เหมือนกัน
  • หัวตารางที่แสดงชื่อวันของทั้งสองชีตไม่เหมือนกัน
  • เก็บข้อมูล 2 บรรทัดในเซลล์เดียว
ข้างบนนี้ต้องมีการจัดการด้วยสูตรเช้าไปช่วย ยิ่งสร้างอุปสรรคไว้มากก็จะต้องใช้สูตรที่ยุ่งยากมากขึ้น

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

ไวยากรณ์ของ Let คือ

=let(name1,name_value1,calculation_or_name2,name_value2,...)

name1 คือชื่อของสูตร
name_value1 คือสูตรของ name1

จะใช้เป็นชุด ๆ ไปเช่นนี้จนครบทุกชุดที่ต้องการ โดยชุดหลังสุดคือคำตอบที่ต้องการแสดงในเซลล์

จากสูตร

=LET(day,LEFT($E$7:$AI$7,FIND(".",$E$7:$AI$7)),tran,IF(ISNUMBER(LEFT($E8:$AI8)+0),LEFT($E8:$AI8,5)),dth,INDEX(day,{2,3,4,5,6}),fdty,INDEX(วันเวร!$C$2:$G$113,MATCH("*"&$C8,TRIM(วันเวร!$B$2:$B$113),0),0),daydty,ISNUMBER(MATCH(day,IF(ISTEXT(fdty),dth),0)),rsc,SUM(IFERROR(daydty/(tran+0>="7:00"+0),0)),nrsc,SUM(IFERROR((1-daydty)/(tran+0>="7:15"+0),0)),rsc+nrsc)

ชุดที่ 1 คือ day,LEFT($E$7:$AI$7,FIND(".",$E$7:$AI$7)) เป็นการตัดชื่อวันมาแสดง สามารถทดสอบโดยการเปลี่ยนชุดสุดท้ายในสูตรด้านบนคือ rsc+nrsc เป็น day แล้วสังเกตดูผล

ชุดที่ 2 คือ tran,IF(ISNUMBER(LEFT($E8:$AI8)+0),LEFT($E8:$AI8,5)) เป็นการตัดเอาเวลาเข้างานในแต่ละบรรทัดมาแสดง สามารถทดสอบโดยการเปลี่ยนชุดสุดท้ายในสูตรด้านบนคือ rsc+nrsc เป็น tran แล้วสังเกตดูผล

ชุดที่ 3 คือ dth,INDEX(day,{2,3,4,5,6}) เป็นการสร้างหัวคอลัมน์ให้รองรับข้อมูลของชีต วันเวร สามารถทดสอบโดยการเปลี่ยนชุดสุดท้ายในสูตรด้านบนคือ rsc+nrsc เป็น dth แล้วสังเกตดูผล

ชุดที่ 4 คือ fdty,INDEX(วันเวร!$C$2:$G$113,MATCH("*"&$C8,TRIM(วันเวร!$B$2:$B$113),0),0) เป็นการหาว่ารายชื่อพนักงานในบรรทัดนั้น ๆ หยุดในวันใดบ้าง สามารถทดสอบโดยการเปลี่ยนชุดสุดท้ายในสูตรด้านบนคือ rsc+nrsc เป็น fdty แล้วสังเกตดูผล

ชุดที่ 5 คือ daydty,ISNUMBER(MATCH(day,IF(ISTEXT(fdty),dth),0)) เป็นการหาว่าพนักงานในบรรทัดนั้น ๆ หยุดวันไหนบ้าง สามารถทดสอบโดยการเปลี่ยนชุดสุดท้ายในสูตรด้านบนคือ rsc+nrsc เป็น daydty แล้วสังเกตดูผล

ชุดที่ 6 คือ rsc,SUM(IFERROR(daydty/(tran+0>="7:00"+0),0)) เป็นการหาว่าพนักงานในบรรทัดนั้น ๆ ที่มีวันเวรเข้าสายกี่วัน สามารถทดสอบโดยการเปลี่ยนชุดสุดท้ายในสูตรด้านบนคือ rsc+nrsc เป็น rsc แล้วสังเกตดูผล

ชุดที่ 7 คือ nrsc,SUM(IFERROR((1-daydty)/(tran+0>="7:15"+0),0)) เป็นการหาว่าพนักงานในบรรทัดนั้น ๆ ที่ไม่มีวันเวรเข้าสายกี่วัน สามารถทดสอบโดยการเปลี่ยนชุดสุดท้ายในสูตรด้านบนคือ rsc+nrsc เป็น nrsc แล้วสังเกตดูผล

ตัวสุดท้ายคือ rsc+nrsc เป็นผลลัพธ์ เป็นการนำผลลัพธ์ของ rsc และ nrsc มารวมกันครับ
โอ้โห อาจารย์พิมพ์อธิบายมาประกอบแบบนี้ สุดยอดมากเลยครับ ผมอ่านวน 2 รอบ พยายามทำความเข้าใจกับสูตร
ผมว่าเอกเซลนี้เป็นโปรแกรมที่สุดยอดจริงๆ ขอแค่ถ้าเราวิเคราะห์หาสูตรมาจับลงไปได้ งานเราราบรื่นเลยครับ
กราบของพระคุณเป็นอย่างสูงครับ :thup:
yangkodza
Bronze
Bronze
Posts: 372
Joined: Tue Feb 10, 2015 10:37 am
Excel Ver: 2021

Re: นับวันสายแบบมีเงื่อนไข

#6

Post by yangkodza »

อาจารย์ครับ กรณีที่เราจะหาผลของเดือนอื่นๆ ต้องปรับค่าตรงไหนครับ
ผมลองผิดลองถูกแล้ว ยังหาไม่เจอครับ
หรือว่ามีวิธีใดที่ใช้อ้างอิง cell E5 ซึ่งเป็นชื่อเดือนเลยไหมครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30747
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: นับวันสายแบบมีเงื่อนไข

#7

Post by snasui »

:D หาผลของเดือนใด ๆ ข้อมูลก็ต้องเป็นของเดือนนั้น ๆ ไม่ทราบว่ามีประเด็นตรงไหน อย่างไร ข่วยอธิบายพร้อมแนบตัวอย่างที่ชี้ให้เห็นว่าต้องการข้อมูลที่เซลล์ไหนเป็นค่าเท่าใด ด้วยเงื่อนไขใดจะได้เข้าใจตรงกันครับ
yangkodza
Bronze
Bronze
Posts: 372
Joined: Tue Feb 10, 2015 10:37 am
Excel Ver: 2021

Re: นับวันสายแบบมีเงื่อนไข

#8

Post by yangkodza »

อยากนับวันสาย โดยระบุเวลาดังนี้ ข้อมูลเป็นเดือนธันวาคมครับ
คนที่ไม่อยู่่เวร มาทำงาน 7.15 น. ขึ้นไป สาย
ส่วนคนที่เวร มาทำงาน 7.00 น. ขึ้นไป สาย
โดยอ้างอิงกับ แผ่นงาน วันเวร
และให้แสดงผลการนับว่า สายกี่ครั้ง ที่เซลล์ AJ8 ใน แผ่นงานรายงานการมาทำงาน

สรุปธค65.xlsx
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30747
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: นับวันสายแบบมีเงื่อนไข

#9

Post by snasui »

:D ในไฟล์นั้นไม่มีสูตรที่เคยตอบไป กรุณาแนบไฟล์พร้อมสูตรมาใหม่พร้อมชี้ให้เห็นว่าผิดพลาดที่เซลล์ไหน อย่างไร กรณีไม่มีเงื่อนไขใดเพิ่มเติม สูตรเดิมที่เคยให้ไปควรจะต้องให้คำตอบได้ครับ
yangkodza
Bronze
Bronze
Posts: 372
Joined: Tue Feb 10, 2015 10:37 am
Excel Ver: 2021

Re: นับวันสายแบบมีเงื่อนไข

#10

Post by yangkodza »

นับสาย1.PNG
จากภาพประกอบคอลัมสาย คือสูตรต้นฉบับครับ
ส่วนข้อมูลที่ถูกต้องคือผมลองเช็คด้วยมือเอาครับ
ส่วนข้อมูลสีเขียว ถ้าคำตอบ 2 คนนี้ถูก น่าจะถูกหมดครับ ครูดีเด่นครับ ไม่สาย ไม่ขาด

รบกวนอาจารย์ช่วยตรวจสอบด้วยครับผม


ฐานข้อมูลธคพร้อมสูตร.xlsx
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30747
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: นับวันสายแบบมีเงื่อนไข

#11

Post by snasui »

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

=LET(day,LEFT($E$7:$AI$7,FIND(".",$E$7:$AI$7)),tran,IF(ISNUMBER(LEFT($E8:$AI8)+0),LEFT($E8:$AI8,5)),dth,{"จ.","อ.","พ.","พฤ.","ศ."},fdty,INDEX(วันเวร!$C$2:$G$113,MATCH("*"&$C8,TRIM(วันเวร!$B$2:$B$113),0),0),daydty,ISNUMBER(MATCH(day,IF(ISTEXT(fdty),dth),0)),rsc,SUM(IFERROR(daydty/(tran+0>="7:00"+0),0)),nrsc,SUM(IFERROR((1-daydty)/(tran+0>="7:15"+0),0)),rsc+nrsc)
yangkodza
Bronze
Bronze
Posts: 372
Joined: Tue Feb 10, 2015 10:37 am
Excel Ver: 2021

Re: นับวันสายแบบมีเงื่อนไข

#12

Post by yangkodza »

snasui wrote: Tue Jan 31, 2023 7:03 pm :D เนื่องจากชื่อของวันที่เริ่มของแต่ละเดือนไม่เหมือนกันจึงทำให้ผลการคำนวณคลาดเคลื่อน สามารถปรับสูตรที่ AJ8 เป็นด้านล่างครับ

=LET(day,LEFT($E$7:$AI$7,FIND(".",$E$7:$AI$7)),tran,IF(ISNUMBER(LEFT($E8:$AI8)+0),LEFT($E8:$AI8,5)),dth,{"จ.","อ.","พ.","พฤ.","ศ."},fdty,INDEX(วันเวร!$C$2:$G$113,MATCH("*"&$C8,TRIM(วันเวร!$B$2:$B$113),0),0),daydty,ISNUMBER(MATCH(day,IF(ISTEXT(fdty),dth),0)),rsc,SUM(IFERROR(daydty/(tran+0>="7:00"+0),0)),nrsc,SUM(IFERROR((1-daydty)/(tran+0>="7:15"+0),0)),rsc+nrsc)
ใช้งานได้ตามที่ต้องการเลยครับผม ขอบคุณมากครับอาจารย์ :thup:
yangkodza
Bronze
Bronze
Posts: 372
Joined: Tue Feb 10, 2015 10:37 am
Excel Ver: 2021

Re: นับวันสายแบบมีเงื่อนไข

#13

Post by yangkodza »

อาจารย์ครับ อยากประยุกต์ตัวหนังสื่อเวลาสายของคนที่อยู่เวร ให้เป็นสีส้มครับ
จะได้สะดวกต่อการตรวจสอบข้อมูล
สีส้ม.PNG
จากภาพ ตัวโปรแกรมสามามารถทำได้แต่สายเกิน 07:15 ถึงจะเป็นสีส้ม
แต่ถ้าคนที่อยู่เวรและมาสายเกิน 07:00 เป็นสีดำทำให้ยากต่อการเช็คครับ
รบกวนอาจารย์ชี้แนะให้หน่อยครับ
ประยุกต์เวลาสายสีส้ม.xlsx
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30747
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: นับวันสายแบบมีเงื่อนไข

#14

Post by snasui »

:D เริ่มคลุมจากเซลล์ E8 จากนั้นกำหนด Conditional Formatting ด้วยสูตรตามด้านล่างครับ

=IFERROR(AND(INDEX(วันเวร!$C$2:$G$113,MATCH("*"&$C8,TRIM(วันเวร!$B$2:$B$113),0),MATCH(LEFT(E$7,FIND(".",E$7)),TRIM(LEFT(SUBSTITUTE(OFFSET($E$7,0,MATCH("จ.*",$E$7:$AI$7,0)-1,1,5),CHAR(10),REPT(" ",5)),5)),0))="เวร",LEFT(E8,5)+0>=7/24),FALSE)
yangkodza
Bronze
Bronze
Posts: 372
Joined: Tue Feb 10, 2015 10:37 am
Excel Ver: 2021

Re: นับวันสายแบบมีเงื่อนไข

#15

Post by yangkodza »

snasui wrote: Wed Feb 01, 2023 8:04 pm :D เริ่มคลุมจากเซลล์ E8 จากนั้นกำหนด Conditional Formatting ด้วยสูตรตามด้านล่างครับ

=IFERROR(AND(INDEX(วันเวร!$C$2:$G$113,MATCH("*"&$C8,TRIM(วันเวร!$B$2:$B$113),0),MATCH(LEFT(E$7,FIND(".",E$7)),TRIM(LEFT(SUBSTITUTE(OFFSET($E$7,0,MATCH("จ.*",$E$7:$AI$7,0)-1,1,5),CHAR(10),REPT(" ",5)),5)),0))="เวร",LEFT(E8,5)+0>=7/24),FALSE)
อาจารย์ครับ ผมคลุมพื้นที่ทั้งหมดโดยเริ่มตั้งแต่ E8
แล้วใส่ Conditional Formatting ด้วยสูตร แต่ไม่แสดงอะไรออกมาครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30747
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: นับวันสายแบบมีเงื่อนไข

#16

Post by snasui »

:D กรุณาแนบไฟล์ล่าสุดมาด้วยพร้อมอธิบายว่าได้กำหนดให้แสดงแบบใดจะได้เข้าถึงปัญหาโดยไวครับ
yangkodza
Bronze
Bronze
Posts: 372
Joined: Tue Feb 10, 2015 10:37 am
Excel Ver: 2021

Re: นับวันสายแบบมีเงื่อนไข

#17

Post by yangkodza »

snasui wrote: Wed Feb 01, 2023 9:15 pm :D กรุณาแนบไฟล์ล่าสุดมาด้วยพร้อมอธิบายว่าได้กำหนดให้แสดงแบบใดจะได้เข้าถึงปัญหาโดยไวครับ
จากไฟล์งาน แถว A17 เวรวันพุธและพฤหัส ผมได้ทำแถบสีเขียวไว้คือวันที่สมาชิกท่านนี้มาสายครับ
อยากให้แสดงว่าถ้ามาสายให้ตัวข้อความเวลาเป็นสีส้มครับ
ประยุกต์เวลาสายสีส้ม 1.xlsx
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30747
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: นับวันสายแบบมีเงื่อนไข

#18

Post by snasui »

:D ดูตัวอย่างจากไฟล์แนบ ผมระบายเป็นสีทึบไว้ให้ ลองไปเปลี่ยนเป็นสีหรือรูปแบบอื่นใดดูตามต้องการครับ
You do not have the required permissions to view the files attached to this post.
yangkodza
Bronze
Bronze
Posts: 372
Joined: Tue Feb 10, 2015 10:37 am
Excel Ver: 2021

Re: นับวันสายแบบมีเงื่อนไข

#19

Post by yangkodza »

snasui wrote: Wed Feb 01, 2023 10:45 pm :D ดูตัวอย่างจากไฟล์แนบ ผมระบายเป็นสีทึบไว้ให้ ลองไปเปลี่ยนเป็นสีหรือรูปแบบอื่นใดดูตามต้องการครับ
สุดยอดมากครับอาจารย์
ผมขอปรับในส่วนของ วันสายปกติที่ไม่เวร ให้เป็นสีเหมือนกับวันสายเวรได้ไหมครับ
จะได้ไปในทิศทางเดียวกันเลย :D
User avatar
snasui
Site Admin
Site Admin
Posts: 30747
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: นับวันสายแบบมีเงื่อนไข

#20

Post by snasui »

:D ตัวอย่างการปรับสูตรครับ

=LET(a,INDEX(วันเวร!$C$2:$G$113,MATCH("*"&$C8,TRIM(วันเวร!$B$2:$B$113),0),MATCH(LEFT(E$7,FIND(".",E$7)),TRIM(LEFT(SUBSTITUTE(OFFSET($E$7,0,MATCH("จ.*",$E$7:$AI$7,0)-1,1,5),CHAR(10),REPT(" ",5)),5)),0)),OR(AND(a=0,LEFT(E8,5)+0>="7:15"+0),AND(a="เวร",LEFT(E8,5)+0>=7/24)))
Post Reply