: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

ขอวิธีแก้ไขสูตรบันทึกเวลาเรียนครับ

ฟอรัมถาม-ตอบปัญหาการใช้งาน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
ajsudkedt
Gold
Gold
Posts: 1173
Joined: Thu Jan 28, 2010 11:08 am
Excel Ver: 2021

ขอวิธีแก้ไขสูตรบันทึกเวลาเรียนครับ

#1

Post by ajsudkedt »

ที่ชีต 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.
User avatar
snasui
Site Admin
Site Admin
Posts: 31120
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019, 365
Contact:

Re: ขอวิธีแก้ไขสูตรบันทึกเวลาเรียนครับ

#2

Post by snasui »

:D ยังไม่ค่อยเข้าใจสิ่งที่อธิบาย แต่จากการดูสูตรในชีต GS พบว่าเป็นสูตรที่จะมีปัญหาเมื่อมีการแทรกหรือลบบรรทัด เพราะเป็นการเขียนให้ทำงานเฉพาะช่วงของชีตแบบ Fixed ค่า

ตัวอย่างการปรับปรุงสูตรเดิมให้สามารถใช้ได้ทั้งตารางโดยไม่มีการ Fixed ตำแหน่ง ไม่ต้องเขียนและปรับปรุงสูตรใหม่เมื่อมีการแทรกหรือการลบบรรทัด

โดยมีการแทรก IN:IO คอลัมน์ช่วยขึ้นมา 2 คอลัมน์เพื่อให้เขียนสูตรเดียวแล้วใช้ได้ทั้งตาราง ตามด้านล่างครับ
  1. ที่ IN1 คีย์ Header
  2. ที่ IO1 คีย์ Row
  3. ที่ IN2 เป็นคอลัมน์ช่วย คีย์
    ="'R"&D2&"'!N1:CO1"
    Enter > Copy ลงด้านล่าง
  4. ที่ IO2 เป็นคอลัมน์ช่วย คีย์
    ="'R"&D2&"'!N"&E2+2&":CO"&E2+2
    Enter > Copy ลงด้านล่าง
  5. ที่ 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
Gold
Posts: 1173
Joined: Thu Jan 28, 2010 11:08 am
Excel Ver: 2021

Re: ขอวิธีแก้ไขสูตรบันทึกเวลาเรียนครับ

#3

Post by ajsudkedt »

โดยปกติ หากบันทึกวันที่ไม่เข้าเรียนของนักเรียนแต่ละห้อง (ชีต R1 คือ ห้อง 1, R2 คือ ห้อง 2, R3 คือ ห้อง 3 และ R4 คือ ห้อง 4) ด้วยการคีย์ ตัวอักษร ข (ขาด), ป(ป่วย), ล (ลากิจ), หรือ น(หนีเรียน) ลงในวันที่ใด ๆ ของนักเรียนคนใด ในชีต R1 ถึง R4 ข้อมูลที่คีย์ จะไปแสดงที่ชีต GS ปัญหาเจอตอนนี้คือ หากมีนักเรียนย้ายเข้ามาใหม่ ไม่ว่าจะย้ายเข้ามาอยู่ห้องใด (R1 ถึง R4) ชื่อนักเรียนคนดังกล่าวอยู่เลขที่สุดท้ายและที่บรรทัดสุดท้ายของห้องนั้น ๆ หากมีการคีย์วันที่ไม่เข้าเรียนของนักเรียนที่ย้ายเข้ามาใหม่ โดยการใส่ ข, ล, ป, หรือ น ลงในชีตของห้อง (R1-R4) ของนักเรียนที่ย้ายเข้า ข้อมูลที่คีย์จะไม่แสดงที่ชีต GS แต่กลับจะแสดงข้อมูลของเลขที่ 1 ของห้องนั้น ๆ แทน "ทำอย่างไรให้จะให้ข้อมูลที่คีย์ของนักเรียนที่ย้ายเข้าใหม่นั้น ไปแสดงที่ชีต GS" ตามไฟล์แนบ ครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31120
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019, 365
Contact:

Re: ขอวิธีแก้ไขสูตรบันทึกเวลาเรียนครับ

#4

Post by snasui »

:D ไม่พบไฟล์แนบล่าสุดครับ

ควรทดสอบสูตรที่ผมให้ไปล่าสุดว่าได้ผลหรือไม่ อย่างไร ไฟล์เดิมผมชี้ให้เห็นแล้วว่ามีจุดอ่อนอย่างไร ควรเอาใจใส่สิ่งที่ผมตอบไปเสมอครับ

หากจะใช้ไฟล์เดิมชี้ให้เห็นว่าเซลล์ที่ผิดพลาดจะต้องได้ค่าเท่าใด ด้วยเงื่อนไขใดบ้าง

ค่อย ๆ ถามตอบกันไปครับ
ajsudkedt
Gold
Gold
Posts: 1173
Joined: Thu Jan 28, 2010 11:08 am
Excel Ver: 2021

Re: ขอวิธีแก้ไขสูตรบันทึกเวลาเรียนครับ

#5

Post by ajsudkedt »

snasui wrote: Sun Sep 07, 2025 8:11 am :D ยังไม่ค่อยเข้าใจสิ่งที่อธิบาย แต่จากการดูสูตรในชีต GS พบว่าเป็นสูตรที่จะมีปัญหาเมื่อมีการแทรกหรือลบบรรทัด เพราะเป็นการเขียนให้ทำงานเฉพาะช่วงของชีตแบบ Fixed ค่า

ตัวอย่างการปรับปรุงสูตรเดิมให้สามารถใช้ได้ทั้งตารางโดยไม่มีการ Fixed ตำแหน่ง ไม่ต้องเขียนและปรับปรุงสูตรใหม่เมื่อมีการแทรกหรือการลบบรรทัด

โดยมีการแทรก IN:IO คอลัมน์ช่วยขึ้นมา 2 คอลัมน์เพื่อให้เขียนสูตรเดียวแล้วใช้ได้ทั้งตาราง ตามด้านล่างครับ
  1. ที่ IN1 คีย์ Header
  2. ที่ IO1 คีย์ Row
  3. ที่ IN2 เป็นคอลัมน์ช่วย คีย์
    ="'R"&D2&"'!N1:CO1"
    Enter > Copy ลงด้านล่าง
  4. ที่ IO2 เป็นคอลัมน์ช่วย คีย์
    ="'R"&D2&"'!N"&E2+2&":CO"&E2+2
    Enter > Copy ลงด้านล่าง
  5. ที่ 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 ครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31120
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019, 365
Contact:

Re: ขอวิธีแก้ไขสูตรบันทึกเวลาเรียนครับ

#6

Post by snasui »

ajsudkedt wrote: Sun Sep 07, 2025 11:41 am หลังใส่สูตรทำให้ไฟล์ใหญ่ขึ้นมาก
:D มันมีโอกาสเป็นไปได้เพราะ Indirect คือฟังก์ชันที่ถูกกระทบให้เปลี่ยนแปลงได้โดยง่าย เมื่อเซลล์ใดคำนวณเซลล์ที่มี Indirect จะคำนวณด้วย

หากไฟล์ไม่ได้ใหญ่อย่างเป็นสาระสำคัญก็ใช้วิธีนี้ต่อไปได้ แต่หากเป็นอุปสรรคต่อการใช้งานก็ควรออกแบบใหม่ แบบเดิมก็เป็นอุปสรรคเช่นกัน
ajsudkedt
Gold
Gold
Posts: 1173
Joined: Thu Jan 28, 2010 11:08 am
Excel Ver: 2021

Re: ขอวิธีแก้ไขสูตรบันทึกเวลาเรียนครับ

#7

Post by ajsudkedt »

snasui wrote: Sun Sep 07, 2025 12:29 pm
ajsudkedt wrote: Sun Sep 07, 2025 11:41 am หลังใส่สูตรทำให้ไฟล์ใหญ่ขึ้นมาก
:D มันมีโอกาสเป็นไปได้เพราะ Indirect คือฟังก์ชันที่ถูกกระทบให้เปลี่ยนแปลงได้โดยง่าย เมื่อเซลล์ใดคำนวณเซลล์ที่มี Indirect จะคำนวณด้วย

หากไฟล์ไม่ได้ใหญ่อย่างเป็นสาระสำคัญก็ใช้วิธีนี้ต่อไปได้ แต่หากเป็นอุปสรรคต่อการใช้งานก็ควรออกแบบใหม่ แบบเดิมก็เป็นอุปสรรคเช่นกัน
รับทราบครับผม ขอบคุณครับ
สูตรนี้สามารถใช้กับ excel ได้ทุก version ไหมครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31120
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019, 365
Contact:

Re: ขอวิธีแก้ไขสูตรบันทึกเวลาเรียนครับ

#8

Post by snasui »

ajsudkedt wrote: Sun Sep 07, 2025 12:44 pm ใช้กับ excel ได้ทุก version ไหมครับ
:D เนื่องจากมีฟังก์ชัน Aggregate จึงใช้ได้ตั้งแต่ Version 2013 เป็นต้นไปครับ
ajsudkedt
Gold
Gold
Posts: 1173
Joined: Thu Jan 28, 2010 11:08 am
Excel Ver: 2021

Re: ขอวิธีแก้ไขสูตรบันทึกเวลาเรียนครับ

#9

Post by ajsudkedt »

snasui wrote: Sun Sep 07, 2025 1:32 pm
ajsudkedt wrote: Sun Sep 07, 2025 12:44 pm ใช้กับ excel ได้ทุก version ไหมครับ
:D เนื่องจากมีฟังก์ชัน Aggregate จึงใช้ได้ตั้งแต่ Version 2013 เป็นต้นไปครับ
ครับผม ขอบคุณครับ
Post Reply