Page 1 of 1

ขอความอนุเคราะห์เรื่อง copy ข้าม sheet แบบมีเงื่อนไขให้ตรงตามวันที่

Posted: Sat Sep 04, 2021 5:10 pm
by 9KiTTi
ขอความอนุเคราะห์เรื่อง copy ข้าม sheet แบบมีเงื่อนไขให้ตรงตามวันที่ โดยที่ เงื่อนไขคือ copy ชื่อ-นามสกุล ผู้ปฏิบัติงาน จาก sheet "หลักฐานการเบิกจ่ายค่าตอบแทน" มาวางในวันที่ปฏิบัติงาน เช่น นายก ปฏิบัตงานวันที่ 1 และ 2 ให้ copy รายชื่อใส่ให้ตรงวันใน sheet "บันทึกลงเวลาฏิบัติงาน" ผมลองค้นหาใน google แล้วแต่ก็ยังไม่เข้าใจ

ขอบพระคุณครับ

Re: ขอความอนุเคราะห์เรื่อง copy ข้าม sheet แบบมีเงื่อนไขให้ตรงตามวันที่

Posted: Sat Sep 04, 2021 5:27 pm
by norkaz
...

B6

=IFERROR(INDEX(หลักฐานการเบิกจ่ายค่าตอบแทน!$B$5:$B$9,AGGREGATE(15,6,(ROW(หลักฐานการเบิกจ่ายค่าตอบแทน!$B$5:$B$9)-ROW($B$4))/(--MID(B5,8,2)=หลักฐานการเบิกจ่ายค่าตอบแทน!$C$4:$AF$4)/(หลักฐานการเบิกจ่ายค่าตอบแทน!$C$5:$AF$9<>""),1)),"")

Copy ไปวางในแต่ละวัน

Norkaz

Re: ขอความอนุเคราะห์เรื่อง copy ข้าม sheet แบบมีเงื่อนไขให้ตรงตามวันที่

Posted: Sat Sep 04, 2021 6:03 pm
by 9KiTTi
norkaz wrote: Sat Sep 04, 2021 5:27 pm ...

B6

=IFERROR(INDEX(หลักฐานการเบิกจ่ายค่าตอบแทน!$B$5:$B$9,AGGREGATE(15,6,(ROW(หลักฐานการเบิกจ่ายค่าตอบแทน!$B$5:$B$9)-ROW($B$4))/(--MID(B5,8,2)=หลักฐานการเบิกจ่ายค่าตอบแทน!$C$4:$AF$4)/(หลักฐานการเบิกจ่ายค่าตอบแทน!$C$5:$AF$9<>""),1)),"")

Copy ไปวางในแต่ละวัน

Norkaz
ขอบพระคุณครับอาจารย์ ได้ตรงตามที่ต้องการครับ

Re: ขอความอนุเคราะห์เรื่อง copy ข้าม sheet แบบมีเงื่อนไขให้ตรงตามวันที่

Posted: Sat Sep 04, 2021 8:29 pm
by Bo_ry
B5

=IF(MOD(ROWS(B$5:B5),2),"วันที่ "&(ROWS(B$5:B5)+1)/2&TEXT(TODAY()," ดดดด พ.ศ. Bbbb"),IFERROR(LOOKUP("ๆ",INDEX(หลักฐานการเบิกจ่ายค่าตอบแทน!$C$5:$AF$9,,(ROWS(B$5:B5)+1)/2),หลักฐานการเบิกจ่ายค่าตอบแทน!$B$5:$B$9),""))

Re: ขอความอนุเคราะห์เรื่อง copy ข้าม sheet แบบมีเงื่อนไขให้ตรงตามวันที่

Posted: Sat Sep 04, 2021 10:19 pm
by 9KiTTi
Bo_ry wrote: Sat Sep 04, 2021 8:29 pm B5

=IF(MOD(ROWS(B$5:B5),2),"วันที่ "&(ROWS(B$5:B5)+1)/2&TEXT(TODAY()," ดดดด พ.ศ. Bbbb"),IFERROR(LOOKUP("ๆ",INDEX(หลักฐานการเบิกจ่ายค่าตอบแทน!$C$5:$AF$9,,(ROWS(B$5:B5)+1)/2),หลักฐานการเบิกจ่ายค่าตอบแทน!$B$5:$B$9),""))
ขอบพระคุณครับ

Re: ขอความอนุเคราะห์เรื่อง copy ข้าม sheet แบบมีเงื่อนไขให้ตรงตามวันที่

Posted: Sat Sep 04, 2021 11:22 pm
by 9KiTTi
norkaz wrote: Sat Sep 04, 2021 5:27 pm ...

B6

=IFERROR(INDEX(หลักฐานการเบิกจ่ายค่าตอบแทน!$B$5:$B$9,AGGREGATE(15,6,(ROW(หลักฐานการเบิกจ่ายค่าตอบแทน!$B$5:$B$9)-ROW($B$4))/(--MID(B5,8,2)=หลักฐานการเบิกจ่ายค่าตอบแทน!$C$4:$AF$4)/(หลักฐานการเบิกจ่ายค่าตอบแทน!$C$5:$AF$9<>""),1)),"")

Copy ไปวางในแต่ละวัน

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

Re: ขอความอนุเคราะห์เรื่อง copy ข้าม sheet แบบมีเงื่อนไขให้ตรงตามวันที่

Posted: Sat Sep 04, 2021 11:38 pm
by 9KiTTi
ได้แล้วครับ ผมลืมแก้ค่าในฟังก์ชั่นครับ

Re: ขอความอนุเคราะห์เรื่อง copy ข้าม sheet แบบมีเงื่อนไขให้ตรงตามวันที่

Posted: Sun Sep 05, 2021 10:40 am
by 9KiTTi
Bo_ry wrote: Sat Sep 04, 2021 8:29 pm B5

=IF(MOD(ROWS(B$5:B5),2),"วันที่ "&(ROWS(B$5:B5)+1)/2&TEXT(TODAY()," ดดดด พ.ศ. Bbbb"),IFERROR(LOOKUP("ๆ",INDEX(หลักฐานการเบิกจ่ายค่าตอบแทน!$C$5:$AF$9,,(ROWS(B$5:B5)+1)/2),หลักฐานการเบิกจ่ายค่าตอบแทน!$B$5:$B$9),""))
-ขออนุญาสอบถามครับกรณี ทำรายงานในเดือนสิงหาคม แต่อยากให้วันเดือนปีใน sheet บันทึกลงเวลาฯ ย้อนหลังไปกรกฎาคม ต้องทำอย่างไรครับ เพราะในไฟล์ที่ผมแนบมาครั้งแรกผมใช้สูตร

Code: Select all

="วันที่"&" "&TEXT(TODAY()-34,"d"&" mmmm ""พ.ศ."&" ""bbbb")
พอวันที่เปลี่ยนค่าจะเปลี่ยนไปด้วยครับ พอเป็นของอาจารย์ ผมไม่เข้าใจสูตร รบกวนแนะนำผมด้วยครับ

ขอบพระคุณครับ

Re: ขอความอนุเคราะห์เรื่อง copy ข้าม sheet แบบมีเงื่อนไขให้ตรงตามวันที่

Posted: Sun Sep 05, 2021 2:00 pm
by 9KiTTi
แก้ได้แล้วครับ

Code: Select all

="วันที่"&" "&TEXT(EOMONTH(TODAY(),-2)+1,"d ดดดด Bbbb")

Re: ขอความอนุเคราะห์เรื่อง copy ข้าม sheet แบบมีเงื่อนไขให้ตรงตามวันที่

Posted: Sun Sep 05, 2021 10:05 pm
by 9KiTTi
ขออนุญาตสอบถามต่อครับ เนื่องจากเจอปัญหาในงานเดียวกัน เนื่องจากมีการแทรกแถวและคอลัมม์ ทำให้ไม่สามารถ copy ชื่อผู้ปฏิบัติงมาได้เหมือนเดิม ผมลองใช้สูตรของอาจารย์ทั้ง 2 ท่าน แต่ก็ทำได้แค่มีข้อมูลมาแค่วันเดียว คือ วันที่ 1 ส.ค. นอกจากนั้นข้อมูลไม่มาครับ หรือมาไม่ตรงความจริงครับ

Code: Select all

=IFERROR(INDEX(หลักฐานการเบิกจ่ายค่าตอบแทน!$B$7:$B$20,AGGREGATE(15,6,(ROW(หลักฐานการเบิกจ่ายค่าตอบแทน!$B$7:$B$20)-ROW($B$6))/(--MID(B5,8,2)=หลักฐานการเบิกจ่ายค่าตอบแทน!$D$5:$AH$5)/(หลักฐานการเบิกจ่ายค่าตอบแทน!$D$7:$AH$20<>""),1)),"")

Code: Select all

=IF(MOD(ROWS(B$5:B14),2),"วันที่ "&(ROWS(B$5:B14)+1)/2&TEXT(TODAY()," ดดดด พ.ศ. Bbbb"),IFERROR(LOOKUP("ๆ",INDEX(หลักฐานการเบิกจ่ายค่าตอบแทน!$D$7:$AH$20,,(ROWS(B$5:B14)+1)/2),หลักฐานการเบิกจ่ายค่าตอบแทน!$B$7:$B$17),""))
รบกวนขอคำแนะนำด้วยครับ
ขอบพระคุณครับ

Re: ขอความอนุเคราะห์เรื่อง copy ข้าม sheet แบบมีเงื่อนไขให้ตรงตามวันที่

Posted: Mon Sep 06, 2021 12:15 am
by Bo_ry
เว้นข้อมูลว่าง
=IF(MOD(ROWS(B$5:B5),2),"วันที่ "&(ROWS(B$5:B5)+1)/2&MID($A$3,FIND(" ",$A$3),20),IFERROR(LOOKUP("ๆ",หลักฐานการเบิกจ่ายค่าตอบแทน!$B$7:INDEX(หลักฐานการเบิกจ่ายค่าตอบแทน!$B$7:$B$20,MATCH("ๆ",INDEX(หลักฐานการเบิกจ่ายค่าตอบแทน!$D$7:$AH$20,,(ROWS(B4:B$5)+1)/2)))),""))


ไม่เว้นข้อมูลว่าง

=IF(MOD(ROWS(B$5:B5),2),"วันที่ "&(ROWS(B$5:B5)+1)/2&MID($A$3,FIND(" ",$A$3),20),IFERROR(LOOKUP("ๆ",INDEX(หลักฐานการเบิกจ่ายค่าตอบแทน!$D$7:$AH$20,,(ROWS(B$5:B5)+1)/2),หลักฐานการเบิกจ่ายค่าตอบแทน!$B$7:$B$20),""))

Re: ขอความอนุเคราะห์เรื่อง copy ข้าม sheet แบบมีเงื่อนไขให้ตรงตามวันที่

Posted: Mon Sep 06, 2021 9:25 am
by 9KiTTi
Bo_ry wrote: Mon Sep 06, 2021 12:15 am เว้นข้อมูลว่าง
=IF(MOD(ROWS(B$5:B5),2),"วันที่ "&(ROWS(B$5:B5)+1)/2&MID($A$3,FIND(" ",$A$3),20),IFERROR(LOOKUP("ๆ",หลักฐานการเบิกจ่ายค่าตอบแทน!$B$7:INDEX(หลักฐานการเบิกจ่ายค่าตอบแทน!$B$7:$B$20,MATCH("ๆ",INDEX(หลักฐานการเบิกจ่ายค่าตอบแทน!$D$7:$AH$20,,(ROWS(B4:B$5)+1)/2)))),""))


ไม่เว้นข้อมูลว่าง

=IF(MOD(ROWS(B$5:B5),2),"วันที่ "&(ROWS(B$5:B5)+1)/2&MID($A$3,FIND(" ",$A$3),20),IFERROR(LOOKUP("ๆ",INDEX(หลักฐานการเบิกจ่ายค่าตอบแทน!$D$7:$AH$20,,(ROWS(B$5:B5)+1)/2),หลักฐานการเบิกจ่ายค่าตอบแทน!$B$7:$B$20),""))
ขอบพระคุณครับอาจารย์ แก้ไขปัญหาได้แล้วครับ

Re: ขอความอนุเคราะห์เรื่อง copy ข้าม sheet แบบมีเงื่อนไขให้ตรงตามวันที่

Posted: Tue Sep 07, 2021 10:45 am
by 9KiTTi
Bo_ry wrote: Mon Sep 06, 2021 12:15 am เว้นข้อมูลว่าง
=IF(MOD(ROWS(B$5:B5),2),"วันที่ "&(ROWS(B$5:B5)+1)/2&MID($A$3,FIND(" ",$A$3),20),IFERROR(LOOKUP("ๆ",หลักฐานการเบิกจ่ายค่าตอบแทน!$B$7:INDEX(หลักฐานการเบิกจ่ายค่าตอบแทน!$B$7:$B$20,MATCH("ๆ",INDEX(หลักฐานการเบิกจ่ายค่าตอบแทน!$D$7:$AH$20,,(ROWS(B4:B$5)+1)/2)))),""))


ไม่เว้นข้อมูลว่าง

=IF(MOD(ROWS(B$5:B5),2),"วันที่ "&(ROWS(B$5:B5)+1)/2&MID($A$3,FIND(" ",$A$3),20),IFERROR(LOOKUP("ๆ",INDEX(หลักฐานการเบิกจ่ายค่าตอบแทน!$D$7:$AH$20,,(ROWS(B$5:B5)+1)/2),หลักฐานการเบิกจ่ายค่าตอบแทน!$B$7:$B$20),""))
รบกวนช่วยอธิบายทั้ง 2 สูตรได้ไหมครับ ขอความรู้ด้วยครับ

ขอบพระคุณครับ

Re: ขอความอนุเคราะห์เรื่อง copy ข้าม sheet แบบมีเงื่อนไขให้ตรงตามวันที่

Posted: Tue Sep 07, 2021 7:44 pm
by snasui
:D การแกะสูตรเบื้องต้นให้คลิกที่สูตรนั้นแล้วเข้าเมนู Formulas > Evaluate > คลิกซ้ำ ๆ เพื่อดูผลลัพธ์ไปทีละลำดับ อีกวิธีคือคลุมส่วนประกอบสูตรที่ต้องการทราบผลลัพธ์แล้วกดแป้น F9 และกดแป้น ESC เพื่อยกเลิกครับ

วิธีการอ่านสูตรให้อ่านจากด้านนอกเข้าด้านใน ยกตัวอย่างการอ่านสูตรเพื่อเป็นแนวทางเช่น

จากสูตร

=IF(MOD(ROWS(B$5:B5),2),"วันที่ "&(ROWS(B$5:B5)+1)/2&MID($A$3,FIND(" ",$A$3),20),IFERROR(LOOKUP("ๆ",INDEX(หลักฐานการเบิกจ่ายค่าตอบแทน!$D$7:$AH$20,,(ROWS(B$5:B5)+1)/2),หลักฐานการเบิกจ่ายค่าตอบแทน!$B$7:$B$20),""))

แปลว่า ถ้า MOD(ROWS(B$5:B5),2) เป็นจริง ให้แสดงผลลัพธ์ของ "วันที่ "&(ROWS(B$5:B5)+1)/2&MID($A$3,FIND(" ",$A$3),20) ถ้าไม่เป็นจริงให้แสดงผลลัพธ์ของ IFERROR(LOOKUP("ๆ",INDEX(หลักฐานการเบิกจ่ายค่าตอบแทน!$D$7:$AH$20,,(ROWS(B$5:B5)+1)/2),หลักฐานการเบิกจ่ายค่าตอบแทน!$B$7:$B$20),"")

จากสูตร MOD(ROWS(B$5:B5),2) หมายถึง ให้หาเศษจากการหาร ROWS(B$5:B5) ด้วย 2 ซึ่ง ROWS(B$5:B5) คือจำนวนบรรทัดในช่วง B$5:B5 และจะเพิ่มขึ้นหากมีการคัดลอกลงไป

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

จากสูตร MID($A$3,FIND(" ",$A$3),20) หมายถึงให้ตัดอักขระของ A3 มา 20 อักขระ โดยเริ่มตัดตำแหน่งที่พบวรรค

จากสูตร IFERROR(LOOKUP("ๆ",INDEX(หลักฐานการเบิกจ่ายค่าตอบแทน!$D$7:$AH$20,,(ROWS(B$5:B5)+1)/2),หลักฐานการเบิกจ่ายค่าตอบแทน!$B$7:$B$20),"") แปลงว่า ถ้าผลลัพธ์ของ LOOKUP("ๆ",INDEX(หลักฐานการเบิกจ่ายค่าตอบแทน!$D$7:$AH$20,,(ROWS(B$5:B5)+1)/2),หลักฐานการเบิกจ่ายค่าตอบแทน!$B$7:$B$20) เป็นค่าผิดพลาด ให้แสดงค่าว่าง ถ้าไม่เป็นผิดพลาดให้แสดงค่านผลลัพธ์นั้น

จากสูตร LOOKUP("ๆ",INDEX(หลักฐานการเบิกจ่ายค่าตอบแทน!$D$7:$AH$20,,(ROWS(B$5:B5)+1)/2),หลักฐานการเบิกจ่ายค่าตอบแทน!$B$7:$B$20) แปลว่าให้ค่าอักขระสุดท้ายที่พบในช่วง INDEX(หลักฐานการเบิกจ่ายค่าตอบแทน!$D$7:$AH$20,,(ROWS(B$5:B5)+1)/2) โดยนำตำแหน่งเดียวกันในช่วง หลักฐานการเบิกจ่ายค่าตอบแทน!$B$7:$B$20) มาแสดง

จากสูตร INDEX(หลักฐานการเบิกจ่ายค่าตอบแทน!$D$7:$AH$20,,(ROWS(B$5:B5)+1)/2) หมายถึงจากช่วง หลักฐานการเบิกจ่ายค่าตอบแทน!$D$7:$AH$20 ให้นำคอลัมน์ที่เป็นผลลัพธ์ของ (ROWS(B$5:B5)+1)/2 มาแสดง ถ้าหากผลลัพธ์เป็น 10 แสดงว่าให้นำคอลัมน์ที่ 10 มาแสดง เช่นนี้เป็นต้น ค่อย ๆ ศึกษาไปครับ

Re: ขอความอนุเคราะห์เรื่อง copy ข้าม sheet แบบมีเงื่อนไขให้ตรงตามวันที่

Posted: Tue Sep 07, 2021 10:38 pm
by 9KiTTi
snasui wrote: Tue Sep 07, 2021 7:44 pm :D การแกะสูตรเบื้องต้นให้คลิกที่สูตรนั้นแล้วเข้าเมนู Formulas > Evaluate > คลิกซ้ำ ๆ เพื่อดูผลลัพธ์ไปทีละลำดับ อีกวิธีคือคลุมส่วนประกอบสูตรที่ต้องการทราบผลลัพธ์แล้วกดแป้น F9 และกดแป้น ESC เพื่อยกเลิกครับ

วิธีการอ่านสูตรให้อ่านจากด้านนอกเข้าด้านใน ยกตัวอย่างการอ่านสูตรเพื่อเป็นแนวทางเช่น

จากสูตร

=IF(MOD(ROWS(B$5:B5),2),"วันที่ "&(ROWS(B$5:B5)+1)/2&MID($A$3,FIND(" ",$A$3),20),IFERROR(LOOKUP("ๆ",INDEX(หลักฐานการเบิกจ่ายค่าตอบแทน!$D$7:$AH$20,,(ROWS(B$5:B5)+1)/2),หลักฐานการเบิกจ่ายค่าตอบแทน!$B$7:$B$20),""))

แปลว่า ถ้า MOD(ROWS(B$5:B5),2) เป็นจริง ให้แสดงผลลัพธ์ของ "วันที่ "&(ROWS(B$5:B5)+1)/2&MID($A$3,FIND(" ",$A$3),20) ถ้าไม่เป็นจริงให้แสดงผลลัพธ์ของ IFERROR(LOOKUP("ๆ",INDEX(หลักฐานการเบิกจ่ายค่าตอบแทน!$D$7:$AH$20,,(ROWS(B$5:B5)+1)/2),หลักฐานการเบิกจ่ายค่าตอบแทน!$B$7:$B$20),"")

จากสูตร (MOD(ROWS(B$5:B5),2) หมายถึง ให้หาเศษจากการหาร ROWS(B$5:B5) ด้วย 2 ซึ่ง ROWS(B$5:B5) คือจำนวนบรรทัดในช่วง B$5:B5 และจะเพิ่มขึ้นหากมีการคัดลอกลงไป

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

จากสูตร MID($A$3,FIND(" ",$A$3),20) หมายถึงให้ตัดอักขระของ A3 มา 20 อักขระ โดยเริ่มตัดตำแหน่งที่พบวรรค

จากสูตร IFERROR(LOOKUP("ๆ",INDEX(หลักฐานการเบิกจ่ายค่าตอบแทน!$D$7:$AH$20,,(ROWS(B$5:B5)+1)/2),หลักฐานการเบิกจ่ายค่าตอบแทน!$B$7:$B$20),"") แปลงว่า ถ้าผลลัพธ์ของ LOOKUP("ๆ",INDEX(หลักฐานการเบิกจ่ายค่าตอบแทน!$D$7:$AH$20,,(ROWS(B$5:B5)+1)/2),หลักฐานการเบิกจ่ายค่าตอบแทน!$B$7:$B$20) เป็นค่าผิดพลาด ให้แสดงค่าว่าง ถ้าไม่เป็นผิดพลาดให้แสดงค่านผลลัพธ์นั้น

จากสูตร LOOKUP("ๆ",INDEX(หลักฐานการเบิกจ่ายค่าตอบแทน!$D$7:$AH$20,,(ROWS(B$5:B5)+1)/2),หลักฐานการเบิกจ่ายค่าตอบแทน!$B$7:$B$20) แปลว่าให้ค่าอักขระสุดท้ายที่พบในช่วง INDEX(หลักฐานการเบิกจ่ายค่าตอบแทน!$D$7:$AH$20,,(ROWS(B$5:B5)+1)/2) โดยนำตำแหน่งเดียวกันในช่วง หลักฐานการเบิกจ่ายค่าตอบแทน!$B$7:$B$20) มาแสดง

จากสูตร INDEX(หลักฐานการเบิกจ่ายค่าตอบแทน!$D$7:$AH$20,,(ROWS(B$5:B5)+1)/2) หมายถึงจากช่วง หลักฐานการเบิกจ่ายค่าตอบแทน!$D$7:$AH$20 ให้นำคอลัมน์ที่เป็นผลลัพธ์ของ (ROWS(B$5:B5)+1)/2 มาแสดง ถ้าหากผลลัพธ์เป็น 10 แสดงว่าให้นำคอลัมน์ที่ 10 มาแสดง เช่นนี้เป็นต้น ค่อย ๆ ศึกษาไปครับ
ขอบพระคุณครับอาจารย์