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]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
Xcelvba
Silver
Posts: 595 Joined: Thu Feb 03, 2022 9:04 am
Excel Ver: 2019
#1
Post
by Xcelvba » Wed Sep 24, 2025 4:14 pm
ต้องการใช้สูตร กรองข้อมูล มาแค่ 12 รายการ (ถ้าเกินตัดออก) จากชีท Task List เงื่อนไข คือ Action Date (E) ถึง Commitments Date (H)
ให้โชว์ในชีท Calendar B5 , C5 , ....... ไปจนคบวันที่กำหนด
เช่น
ชีท
B5:B16 (วันที่ 1 )
B5 โชว์ ทดสอบ
B6 โชว์ f
C5:C16 (วันที่ 2)
ต้องโชว์ ทดสอบ (เนื่องจากมากจาก commitments ของ รายการ ทดสอบ ยังไม่สิ้นสุด ไปถึงวันที่ 5)
ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31130 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019, 365
Contact:
#2
Post
by snasui » Wed Sep 24, 2025 7:30 pm
ตัวอย่างสูตรที่ B5 ครับ
=IFERROR(INDEX('Task List'!$B:$B,AGGREGATE(15,6,ROW(Table4[Task])/(Table4[Action Date]=B$4),ROWS(B$5:B5))),"")
Enter > Copy ไปด้านขวาและลงด้านล่าง
Copy สูตรที่ B5 ไปวางใน B18 โดยเปลี่ยนเป็น
=IFERROR(INDEX('Task List'!$B:$B,AGGREGATE(15,6,ROW(Table4[Task])/(Table4[Action Date]=B$17 ),ROWS(B$18:B18) )),"")
Copy ไปด้านขวาและลงด้านล่าง
Copy ไปยังวันที่เหลือและเปลี่ยนสูตรให้สอดคล้องกับพื้นที่นั้น ๆ โดยเปลี่ยนตำแหน่งตามตัวอย่างในสูตรด้านบน
ครับ
Xcelvba
Silver
Posts: 595 Joined: Thu Feb 03, 2022 9:04 am
Excel Ver: 2019
#3
Post
by Xcelvba » Thu Sep 25, 2025 8:32 am
ยังไม่ได้ครับ อาจารย์ คำตอบที่ถูกต้อง ต้องเป็ฯตามรูปแนบครับ เพราะ วันที่ Commitment ถึงวันที่ 5/9/2025 ครับ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31130 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019, 365
Contact:
#4
Post
by snasui » Thu Sep 25, 2025 8:50 am
ตัวอย่างการปรับสูตรครับ
ที่ B5 คีย์
=IFERROR(INDEX('Task List'!$B:$B,AGGREGATE(15,6,ROW(Table4[Task])/((Table4[Action Date]<=B$4)*(Table4[Commitments Date]>=B$4) ),ROWS(B$5:B5))),"")
Enter > Copy ไปทางขวาและลงด้านล่างแล้วปรับใช้กับวันที่อื่น ๆ ในบรรทัดล่างที่เหลือ
สูตรนี้พิจารณา 2 เงื่อนไขตามที่ระบายสี
หากไม่เข้าทั้งสองเงื่อนไขจะไม่ได้คำตอบ ดังนั้น B5 แสดงคำว่า "ทดสอบ" ส่วน B6 แสดงค่าว่างไม่ใช่ f ทั้งนี้เพราะ H13 ไม่มีวันที่
หากมีเงื่อนไขใดเพิ่มเติมกรุณาเขียนมาให้ครบถ้วน ยกเว้นสะดวกในการปรับสูตรเองครับ
สำหรับสูตรนี้เป็นการพิจาณาพร้อมกัน หากเข้าเงื่อนใดเงื่อนไขหนึ่งถือว่าเข้าเงื่อนไข เซลล์ B5 คีย์
=LOOKUP(CHAR(255),CHOOSE({1,2,3},"",INDEX('Task List'!$B:$B,AGGREGATE(15,6,ROW(Table4[Task])/((Table4[Action Date]<=B$4)*(Table4[Commitments Date]>=B$4)),ROWS(B$5:B5))),INDEX('Task List'!$B:$B,AGGREGATE(15,6,ROW(Table4[Task])/(Table4[Action Date]=B$4),ROWS(B$5:B5)))))
Enter > Copy ไปทางขวาและลงด้านล่าง ปรับสูตรใช้กับบรรทัดวันที่ด้านล่างที่เหลือ
Xcelvba
Silver
Posts: 595 Joined: Thu Feb 03, 2022 9:04 am
Excel Ver: 2019
#5
Post
by Xcelvba » Thu Sep 25, 2025 9:08 am
ขอบคุณครับอาจารย์ ผมลองเอาไปศึกษาก่อนครับ ปกติ เข้าใจในสูตรนี้
=IFERROR(INDEX('Task List'!$B:$B,AGGREGATE(15,6,ROW(Table4[Task])/((Table4[Action Date]<=B$4)*(Table4[Commitments Date]>=B$4)),ROWS(B$5:B5))),"")
แต่การใช้
=LOOKUP(CHAR(255),CHOOSE({1,2,3},"",INDEX('Task List'!$B:$B,AGGREGATE(15,6,ROW(Table4[Task])/((Table4[Action Date]<=B$4)*(Table4[Commitments Date]>=B$4)),ROWS(B$5:B5))),INDEX('Task List'!$B:$B,AGGREGATE(15,6,ROW(Table4[Task])/(Table4[Action Date]=B$4),ROWS(B$5:B5)))))
ขอทำความเข้าใจก่อนครับ