snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
kampanart
Member
Posts: 32 Joined: Thu Jan 11, 2018 2:13 pm
#1
Post
by kampanart » Sat Mar 10, 2018 10:07 pm
คือ ผมใช้ IF เพื่อเลือกวันที่ครับ สมมุติมีอยู่ 6 วัน พุธ, พฤ, ศุกร์, เสาร์, อาทิตย์, จันทร์
ตัวข้อมูลของผมจะลบ 1 วัน ซึ่งถ้าอยู่วัน พฤ ผมจะให้ผมพุธ = Y ส่วนที่เหลือ = N แต่ถ้าผมอยู่วันจันทร์ผมจะให้ แค่ศุกร์กับเสาร์ = Y ที่เหลือ N ครับซึ่งต้องใช้ IF อย่างไงครับ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 30919 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#2
Post
by snasui » Sat Mar 10, 2018 10:58 pm
ตัวอย่างสูตรที่ A3 ครับ
=IF(AND(WEEKDAY($A$6,2)=1,OR(WEEKDAY(A1,2)=5,WEEKDAY(A1,2)=6)),"Y",IF(AND(WEEKDAY($A$6,2)<>1,WEEKDAY(A1,2)=WEEKDAY($A$6-1,2)),"Y","N"))
Enter > Copy ไปด้านขวา
kampanart
Member
Posts: 32 Joined: Thu Jan 11, 2018 2:13 pm
#3
Post
by kampanart » Sun Mar 11, 2018 8:48 am
อาจารย์ครับผมสอบถามเพิ่มเติมครับ สมมุติวันจันทร์ที่ 12 ให้ Y แค่ศุกร์ 9 กับ เสาร์ที่10 ครับไม่ Y ศุกร์ที่16 กับเสา17 (จะไม่ Y มากกว่าวันที่ตัวเองอยู่)
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 30919 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#4
Post
by snasui » Sun Mar 11, 2018 8:57 am
ตัวอย่างการปรับสูตรครับ
=IF(AND(A1<$A$6,WEEKDAY($A$6,2)=1,OR(WEEKDAY(A1,2)=5,WEEKDAY(A1,2)=6)),"Y",IF(AND(WEEKDAY($A$6,2)<>1,WEEKDAY(A1,2)=WEEKDAY($A$6-1,2)),"Y","N"))
kampanart
Member
Posts: 32 Joined: Thu Jan 11, 2018 2:13 pm
#5
Post
by kampanart » Sun Mar 11, 2018 10:07 am
อาจารย์ครับติดอีกนิดเดียวครับ คือเวลาอยู่วันอังคารจะไป Y ที่วันจันทร์แค่วันก่อนหน้าวันอังคาร์ ณ ปัจจุบันอย่างเดี่ยวแต่นี่ไป Y ทุกจันทร์เลยอะครับ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 30919 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#6
Post
by snasui » Sun Mar 11, 2018 10:18 am
ตัวอย่างการปรับสูตรครับ
=IF(AND(A1<$A$6,WEEKDAY($A$6,2)=1,OR(WEEKDAY(A1,2)=5,WEEKDAY(A1,2)=6)),"Y",IF(AND(A1<$A$6,WEEKDAY($A$6,2)<>1,WEEKDAY(A1,2)=WEEKDAY($A$6-1,2)),"Y","N"))
โปรดสังเกตว่าในแต่ละครั้งผมเพิ่มส่วนใดเข้าไป แม้สูตรจะยาวแต่ไม่ใช่สูตรที่ถือว่าซับซ้อนสูง สามารถทำความเข้าใจได้ไม่ยากครับ
kampanart
Member
Posts: 32 Joined: Thu Jan 11, 2018 2:13 pm
#7
Post
by kampanart » Sun Mar 11, 2018 10:54 am
สงสัยครับว่าทำไม พออยุ่จันทร์ที่ 19 มันไป Y ที่ ศุกร์2,9 กับ เสาร์3,10 ครับ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 30919 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#8
Post
by snasui » Sun Mar 11, 2018 11:09 am
เพราะมันเข้าเงื่อนไขใดเงื่อนไขหนึ่งตามสูตรนั้นครับ ถ้าไม่เข้าเงื่อนไขก็จะไม่แสดง "Y" ครับ
ลองอธิบายเงื่อนไขที่เป็นไปได้ทั้่งหมดมาใหม่ จะได้เขียนสูตรให้ครอบคลุมทีเดียว การเป็น Y และ เป็น N ต้องเข้าเงื่อนใดบ้าง กี่เงื่อนไข พิจารณาล่วงหน้าไปกี่วัน ย้อนหลังไปกี่วัน ฯลฯ ครับ
kampanart
Member
Posts: 32 Joined: Thu Jan 11, 2018 2:13 pm
#9
Post
by kampanart » Sun Mar 11, 2018 12:32 pm
เงื่อนไงเป็น แบบนี่อะครับ
1.สมมุติเป็นวันอังคารที่ 13/03/2018 จะให้ตัว Y แสดงบนก่อนหน้า 1 วัน (DAY 1) อาทิเช่น วันอังคารที่ 13/03/2018 ให้ Y แสดงที่ จันทร์12/3/2018 เท่านั้น (1-11 กับ 13-31 จะเป็น N ครับ Y ที่ 12 วันเดี่ยวครับ)
2.ถ้าเป็นวันจันทร์ที่ 13/03/2018 จะให้ Y แสดงบน วันศุกร์ 9/03/2018 กับเสาร์ 10/03/2018 เท่านั้น ส่วนที่เหลือ N ทั้งหมดรับ ส่วนถ้าเป็นจันทร์ที่ 19 จะให้ Y ที่ศุกร์ 17 กับเสาร์ 18 เท่านั้น ที่เหลือ Nหมด ศุกร์ 9 กับเสาร์ 10 ที่ผ่านมาก็ N ครับ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 30919 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#10
Post
by snasui » Sun Mar 11, 2018 2:43 pm
ช่วยอธิบายเพิ่มเติมมาอีก 2 กรณีตามด้านล่างมาอีกรอบครับ
กรณี A6 เป็นวันเสาร์ที่ 17/03/2018 จะแสดงผลอย่างไร
กรณี A6 เป็นวันอาทิตย์ที่ 18/03/2018 จะแสดงผลอย่างไร
kampanart
Member
Posts: 32 Joined: Thu Jan 11, 2018 2:13 pm
#11
Post
by kampanart » Sun Mar 11, 2018 4:17 pm
กรณี A6 เป็นวันเสาร์ที่ 17/03/2018 จะแสดงผลอย่างไร
= วันเสาร์ที่ 17/03/2018 วันตัวเองจะเป็น = N จะไปแสดง U บนวันก่อนหน้าคือวันศุกร์แค่วันเดียวครับ ทีเหลือ N หมด
กรณี A6 เป็นวันอาทิตย์ที่ 18/03/2018 จะแสดงผลอย่างไร
= กรณีเดียวกับเคสข้างบนครับ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 30919 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#12
Post
by snasui » Sun Mar 11, 2018 4:26 pm
kampanart wrote: Sun Mar 11, 2018 4:17 pm
กรณี A6 เป็นวันอาทิตย์ที่ 18/03/2018 จะแสดงผลอย่างไร
= กรณีเดียวกับเคสข้างบนครับ
กรณีเดียวกับเคสข้างบนคือ
วันเสาร์ก่อนหน้า 1 ลำดับเป็น Y และนอกจากนั้นเป็น N ใช่หรือไม่ครับ
kampanart
Member
Posts: 32 Joined: Thu Jan 11, 2018 2:13 pm
#13
Post
by kampanart » Sun Mar 11, 2018 4:50 pm
ถูกต้องครับ เป็นวันอาทิตย์ที่ 18/03/2018 จะแสดงผล Y ที่วันเสาร์ที่17/03/2018 ส่วนที่เหลือ เป็น N หมดครับ
snasui
Site Admin
Posts: 30919 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#14
Post
by snasui » Sun Mar 11, 2018 5:01 pm
kampanart wrote: Sun Mar 11, 2018 4:50 pm
ถูกต้องครับ เป็นวันอาทิตย์ที่ 18/03/2018 จะแสดงผล Y ที่วันเสาร์ที่17/03/2018 ส่วนที่เหลือ เป็น N หมดครับ
ตัวอย่างการปรับสูตรที่ A3 ครับ
=IF(A1>=$A$6,"N",IF(AND($A$6-A1<7,ISNUMBER(FIND(WEEKDAY($A$6,2),"16")),WEEKDAY(A1,2)=5),"Y",IF(AND(ISERR(FIND(WEEKDAY($A$6,2),"16")),A1=$A$6-1),"Y","N")))
Enter > Copy ไปทางขวา
kampanart
Member
Posts: 32 Joined: Thu Jan 11, 2018 2:13 pm
#15
Post
by kampanart » Sun Mar 11, 2018 5:09 pm
ช่วยอธิบาย Code หน่อยได้ไหมครับ คือตรงผมก็ยังงง ครับ Codeอยู่อะ พออาจารย์แก้มาให้มันถูกต้องครับ แต่ ขาดวันเสาร์ ไม่ Y ครับ ถ้าวันปัจจุบันเป็นวันจันทร์ มัน Yแค่ศุกร์
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 30919 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#16
Post
by snasui » Sun Mar 11, 2018 5:34 pm
ผมสรุปเงือนไขใหม่ดังนี้
กรณี A6 เป็นวันจันทร์ ให้ค่าใน A1:AY1 ที่เป็นวันศุกร์ และเสาร์ ก่อนหน้า 1 ลำดับเป็น Y นอกนั้นเป็น N
กรณี A6 เป็นวันอื่นที่ไม่ใช่ตามข้อ 1 ให้ค่าใน A1:AY1 ที่เป็นวันก่อนหน้า A6 1 ลำดับเป็น Y นอกนั้นเป็น N
หากผมเข้าใจถูกต้องสูตรใน A3 ปรับเป็นด้านล่างครับ
=IF(A1>=$A$6,"N",IF(AND($A$6-A1<7,ISNUMBER(FIND(WEEKDAY($A$6,2),"16")),OR(WEEKDAY(A1,2)=5,WEEKDAY(A1,2)=6)),"Y",IF(AND(ISERR(FIND(WEEKDAY($A$6,2),"16")),A1=$A$6-1),"Y","N")))
kampanart
Member
Posts: 32 Joined: Thu Jan 11, 2018 2:13 pm
#17
Post
by kampanart » Sun Mar 11, 2018 7:16 pm
ถูกต้องครับอาจารย์ ขอบคุณมากๆครับ