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]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
ajsudkedt
Gold
Posts: 1173 Joined: Thu Jan 28, 2010 11:08 am
Excel Ver: 2021
#1
Post
by ajsudkedt » Sun Sep 07, 2025 5:16 am
ที่ชีต GS บรรทัดที่ 73 เป็นนักเรียนห้อง 1 ที่เพิ่งย้ายเข้ามา
เลยได้อยู่บรรทัดสุดท้าย แต่พอบันทึก ข ป ล น ที่ชีต R1
ของเลขที่ 17 บรรทัดที่ 19 ข้อมูลที่บันทึก ข ป ล น ไม่แสดงที่ชีต GR
แต่กลับเอาข้อมูลของเลขที่ 1 ของ R1 มาแสดงแทน
ต้องปรับแก้สูตรอย่างไร ตามไฟล์แนบครับ
ปล. หากจะยึดเอาเลขประจำตัวเลขห้องและเลขที่ ของชีต R1 ถึง R4 มาจับกับเลขประจำตัวเลขห้องและเลขที่ในคอลัมน์ B ในชีต GS
เพื่อให้แสดงข้อมูลที่บันทึก ข ป ล น ของแต่ละคนที่ IN:LO ของชีต GS จะเป็นไปได้ไหมครับ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31120 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019, 365
Contact:
#2
Post
by snasui » Sun Sep 07, 2025 8:11 am
ยังไม่ค่อยเข้าใจสิ่งที่อธิบาย แต่จากการดูสูตรในชีต GS พบว่าเป็นสูตรที่จะมีปัญหาเมื่อมีการแทรกหรือลบบรรทัด เพราะเป็นการเขียนให้ทำงานเฉพาะช่วงของชีตแบบ Fixed ค่า
ตัวอย่างการปรับปรุงสูตรเดิมให้สามารถใช้ได้ทั้งตารางโดยไม่มีการ Fixed ตำแหน่ง ไม่ต้องเขียนและปรับปรุงสูตรใหม่เมื่อมีการแทรกหรือการลบบรรทัด
โดยมีการแทรก IN:IO คอลัมน์ช่วยขึ้นมา 2 คอลัมน์เพื่อให้เขียนสูตรเดียวแล้วใช้ได้ทั้งตาราง ตามด้านล่างครับ
ที่ IN1 คีย์ Header
ที่ IO1 คีย์ Row
ที่ IN2 เป็นคอลัมน์ช่วย คีย์
="'R"&D2&"'!N1:CO1"
Enter > Copy ลงด้านล่าง
ที่ IO2 เป็นคอลัมน์ช่วย คีย์
="'R"&D2&"'!N"&E2+2&":CO"&E2+2
Enter > Copy ลงด้านล่าง
ที่ IP2 คีย์
=IFERROR(INDEX(TEXT(INDIRECT($IN2),"\""dd/mm/yyyy\""=")&INDIRECT($IO2),AGGREGATE(15,6,COLUMN($N$3:$CO$3)/(INDIRECT($IO2)>99)-COLUMN($N3)+1,COLUMNS($N3:N3))),"")
Enter > Copy ไปด้านขวาและลงด้านล่าง
ajsudkedt
Gold
Posts: 1173 Joined: Thu Jan 28, 2010 11:08 am
Excel Ver: 2021
#3
Post
by ajsudkedt » Sun Sep 07, 2025 9:18 am
โดยปกติ หากบันทึกวันที่ไม่เข้าเรียนของนักเรียนแต่ละห้อง (ชีต R1 คือ ห้อง 1, R2 คือ ห้อง 2, R3 คือ ห้อง 3 และ R4 คือ ห้อง 4) ด้วยการคีย์ ตัวอักษร ข (ขาด), ป(ป่วย), ล (ลากิจ), หรือ น(หนีเรียน) ลงในวันที่ใด ๆ ของนักเรียนคนใด ในชีต R1 ถึง R4 ข้อมูลที่คีย์ จะไปแสดงที่ชีต GS ปัญหาเจอตอนนี้คือ หากมีนักเรียนย้ายเข้ามาใหม่ ไม่ว่าจะย้ายเข้ามาอยู่ห้องใด (R1 ถึง R4) ชื่อนักเรียนคนดังกล่าวอยู่เลขที่สุดท้ายและที่บรรทัดสุดท้ายของห้องนั้น ๆ หากมีการคีย์วันที่ไม่เข้าเรียนของนักเรียนที่ย้ายเข้ามาใหม่ โดยการใส่ ข, ล, ป, หรือ น ลงในชีตของห้อง (R1-R4) ของนักเรียนที่ย้ายเข้า ข้อมูลที่คีย์จะไม่แสดงที่ชีต GS แต่กลับจะแสดงข้อมูลของเลขที่ 1 ของห้องนั้น ๆ แทน "ทำอย่างไรให้จะให้ข้อมูลที่คีย์ของนักเรียนที่ย้ายเข้าใหม่นั้น ไปแสดงที่ชีต GS" ตามไฟล์แนบ ครับ
snasui
Site Admin
Posts: 31120 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019, 365
Contact:
#4
Post
by snasui » Sun Sep 07, 2025 9:51 am
ไม่พบไฟล์แนบล่าสุดครับ
ควรทดสอบสูตรที่ผมให้ไปล่าสุดว่าได้ผลหรือไม่ อย่างไร ไฟล์เดิมผมชี้ให้เห็นแล้วว่ามีจุดอ่อนอย่างไร ควรเอาใจใส่สิ่งที่ผมตอบไปเสมอครับ
หากจะใช้ไฟล์เดิมชี้ให้เห็นว่าเซลล์ที่ผิดพลาดจะต้องได้ค่าเท่าใด ด้วยเงื่อนไขใดบ้าง
ค่อย ๆ ถามตอบกันไปครับ
ajsudkedt
Gold
Posts: 1173 Joined: Thu Jan 28, 2010 11:08 am
Excel Ver: 2021
#5
Post
by ajsudkedt » Sun Sep 07, 2025 11:41 am
snasui wrote: Sun Sep 07, 2025 8:11 am
ยังไม่ค่อยเข้าใจสิ่งที่อธิบาย แต่จากการดูสูตรในชีต GS พบว่าเป็นสูตรที่จะมีปัญหาเมื่อมีการแทรกหรือลบบรรทัด เพราะเป็นการเขียนให้ทำงานเฉพาะช่วงของชีตแบบ Fixed ค่า
ตัวอย่างการปรับปรุงสูตรเดิมให้สามารถใช้ได้ทั้งตารางโดยไม่มีการ Fixed ตำแหน่ง ไม่ต้องเขียนและปรับปรุงสูตรใหม่เมื่อมีการแทรกหรือการลบบรรทัด
โดยมีการแทรก IN:IO คอลัมน์ช่วยขึ้นมา 2 คอลัมน์เพื่อให้เขียนสูตรเดียวแล้วใช้ได้ทั้งตาราง ตามด้านล่างครับ
ที่ IN1 คีย์ Header
ที่ IO1 คีย์ Row
ที่ IN2 เป็นคอลัมน์ช่วย คีย์
="'R"&D2&"'!N1:CO1"
Enter > Copy ลงด้านล่าง
ที่ IO2 เป็นคอลัมน์ช่วย คีย์
="'R"&D2&"'!N"&E2+2&":CO"&E2+2
Enter > Copy ลงด้านล่าง
ที่ IP2 คีย์
=IFERROR(INDEX(TEXT(INDIRECT($IN2),"\""dd/mm/yyyy\""=")&INDIRECT($IO2),AGGREGATE(15,6,COLUMN($N$3:$CO$3)/(INDIRECT($IO2)>99)-COLUMN($N3)+1,COLUMNS($N3:N3))),"")
Enter > Copy ไปด้านขวาและลงด้านล่าง
กราบขอบพระคุณอาจารย์มากครับ สูตรที่ให้มาได้ผลดั่งที่ต้องการเลยครับ
แปลกใจอยู่นิดหนึ่งครับ หลังใส่สูตรทำให้ไฟล์ใหญ่ขึ้นมากเลยครับ
จากเดิม 209 KB
หลังใส่สูตรเป็น 9.97 MB
เปิดไฟล์ใช้เวลานานมากครับ
แต่พอนำสูตรไปใส่ไฟล์ต้นฉบับ กลับไม่ใหญ่ แค่ 1.50 MB ครับ
snasui
Site Admin
Posts: 31120 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019, 365
Contact:
#6
Post
by snasui » Sun Sep 07, 2025 12:29 pm
ajsudkedt wrote: Sun Sep 07, 2025 11:41 am
หลังใส่สูตรทำให้ไฟล์ใหญ่ขึ้นมาก
มันมีโอกาสเป็นไปได้เพราะ Indirect คือฟังก์ชันที่ถูกกระทบให้เปลี่ยนแปลงได้โดยง่าย เมื่อเซลล์ใดคำนวณเซลล์ที่มี Indirect จะคำนวณด้วย
หากไฟล์ไม่ได้ใหญ่อย่างเป็นสาระสำคัญก็ใช้วิธีนี้ต่อไปได้ แต่หากเป็นอุปสรรคต่อการใช้งานก็ควรออกแบบใหม่ แบบเดิมก็เป็นอุปสรรคเช่นกัน
ajsudkedt
Gold
Posts: 1173 Joined: Thu Jan 28, 2010 11:08 am
Excel Ver: 2021
#7
Post
by ajsudkedt » Sun Sep 07, 2025 12:44 pm
snasui wrote: Sun Sep 07, 2025 12:29 pm
ajsudkedt wrote: Sun Sep 07, 2025 11:41 am
หลังใส่สูตรทำให้ไฟล์ใหญ่ขึ้นมาก
มันมีโอกาสเป็นไปได้เพราะ Indirect คือฟังก์ชันที่ถูกกระทบให้เปลี่ยนแปลงได้โดยง่าย เมื่อเซลล์ใดคำนวณเซลล์ที่มี Indirect จะคำนวณด้วย
หากไฟล์ไม่ได้ใหญ่อย่างเป็นสาระสำคัญก็ใช้วิธีนี้ต่อไปได้ แต่หากเป็นอุปสรรคต่อการใช้งานก็ควรออกแบบใหม่ แบบเดิมก็เป็นอุปสรรคเช่นกัน
รับทราบครับผม ขอบคุณครับ
สูตรนี้สามารถใช้กับ excel ได้ทุก version ไหมครับ
snasui
Site Admin
Posts: 31120 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019, 365
Contact:
#8
Post
by snasui » Sun Sep 07, 2025 1:32 pm
ajsudkedt wrote: Sun Sep 07, 2025 12:44 pm
ใช้กับ excel ได้ทุก version ไหมครับ
เนื่องจากมีฟังก์ชัน Aggregate จึงใช้ได้ตั้งแต่ Version 2013 เป็นต้นไปครับ
ajsudkedt
Gold
Posts: 1173 Joined: Thu Jan 28, 2010 11:08 am
Excel Ver: 2021
#9
Post
by ajsudkedt » Mon Sep 08, 2025 9:01 am
snasui wrote: Sun Sep 07, 2025 1:32 pm
ajsudkedt wrote: Sun Sep 07, 2025 12:44 pm
ใช้กับ excel ได้ทุก version ไหมครับ
เนื่องจากมีฟังก์ชัน Aggregate จึงใช้ได้ตั้งแต่ Version 2013 เป็นต้นไปครับ
ครับผม ขอบคุณครับ