: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

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

ฟอรัมถาม-ตอบปัญหาการใช้งาน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
9KiTTi
Member
Member
Posts: 195
Joined: Thu Jun 28, 2012 3:46 pm
Excel Ver: 2016,2019

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

#1

Post by 9KiTTi »

ขอความอนุเคราะห์เรื่อง copy ข้าม sheet แบบมีเงื่อนไขให้ตรงตามวันที่ โดยที่ เงื่อนไขคือ copy ชื่อ-นามสกุล ผู้ปฏิบัติงาน จาก sheet "หลักฐานการเบิกจ่ายค่าตอบแทน" มาวางในวันที่ปฏิบัติงาน เช่น นายก ปฏิบัตงานวันที่ 1 และ 2 ให้ copy รายชื่อใส่ให้ตรงวันใน sheet "บันทึกลงเวลาฏิบัติงาน" ผมลองค้นหาใน google แล้วแต่ก็ยังไม่เข้าใจ

ขอบพระคุณครับ
You do not have the required permissions to view the files attached to this post.
norkaz
Gold
Gold
Posts: 1518
Joined: Wed Jan 12, 2011 7:59 pm
Excel Ver: 2013,365

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

#2

Post 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
You do not have the required permissions to view the files attached to this post.
9KiTTi
Member
Member
Posts: 195
Joined: Thu Jun 28, 2012 3:46 pm
Excel Ver: 2016,2019

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

#3

Post 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
ขอบพระคุณครับอาจารย์ ได้ตรงตามที่ต้องการครับ
User avatar
Bo_ry
Gold
Gold
Posts: 1244
Joined: Sun Aug 12, 2018 12:11 am
Excel Ver: MS 365
Contact:

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

#4

Post 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),""))
You do not have the required permissions to view the files attached to this post.
9KiTTi
Member
Member
Posts: 195
Joined: Thu Jun 28, 2012 3:46 pm
Excel Ver: 2016,2019

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

#5

Post 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),""))
ขอบพระคุณครับ
9KiTTi
Member
Member
Posts: 195
Joined: Thu Jun 28, 2012 3:46 pm
Excel Ver: 2016,2019

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

#6

Post 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 หลักฐานการเบิกจ่ายครับ รบกวนขอคำแนะนำด้วยครับ
You do not have the required permissions to view the files attached to this post.
9KiTTi
Member
Member
Posts: 195
Joined: Thu Jun 28, 2012 3:46 pm
Excel Ver: 2016,2019

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

#7

Post by 9KiTTi »

ได้แล้วครับ ผมลืมแก้ค่าในฟังก์ชั่นครับ
9KiTTi
Member
Member
Posts: 195
Joined: Thu Jun 28, 2012 3:46 pm
Excel Ver: 2016,2019

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

#8

Post 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")
พอวันที่เปลี่ยนค่าจะเปลี่ยนไปด้วยครับ พอเป็นของอาจารย์ ผมไม่เข้าใจสูตร รบกวนแนะนำผมด้วยครับ

ขอบพระคุณครับ
You do not have the required permissions to view the files attached to this post.
9KiTTi
Member
Member
Posts: 195
Joined: Thu Jun 28, 2012 3:46 pm
Excel Ver: 2016,2019

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

#9

Post by 9KiTTi »

แก้ได้แล้วครับ

Code: Select all

="วันที่"&" "&TEXT(EOMONTH(TODAY(),-2)+1,"d ดดดด Bbbb")
9KiTTi
Member
Member
Posts: 195
Joined: Thu Jun 28, 2012 3:46 pm
Excel Ver: 2016,2019

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

#10

Post 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),""))
รบกวนขอคำแนะนำด้วยครับ
ขอบพระคุณครับ
You do not have the required permissions to view the files attached to this post.
User avatar
Bo_ry
Gold
Gold
Posts: 1244
Joined: Sun Aug 12, 2018 12:11 am
Excel Ver: MS 365
Contact:

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

#11

Post 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),""))
You do not have the required permissions to view the files attached to this post.
9KiTTi
Member
Member
Posts: 195
Joined: Thu Jun 28, 2012 3:46 pm
Excel Ver: 2016,2019

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

#12

Post 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),""))
ขอบพระคุณครับอาจารย์ แก้ไขปัญหาได้แล้วครับ
9KiTTi
Member
Member
Posts: 195
Joined: Thu Jun 28, 2012 3:46 pm
Excel Ver: 2016,2019

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

#13

Post 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 สูตรได้ไหมครับ ขอความรู้ด้วยครับ

ขอบพระคุณครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30738
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

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

#14

Post 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 มาแสดง เช่นนี้เป็นต้น ค่อย ๆ ศึกษาไปครับ
9KiTTi
Member
Member
Posts: 195
Joined: Thu Jun 28, 2012 3:46 pm
Excel Ver: 2016,2019

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

#15

Post 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 มาแสดง เช่นนี้เป็นต้น ค่อย ๆ ศึกษาไปครับ
ขอบพระคุณครับอาจารย์
Post Reply