: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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

#61

Post by suka »

อาจารย์คะ เหตุใดจึงสั้นและง่ายปานนี้คะ คนธรรมดามิใช่( ระดับปรมาจารย์ )จะทราบความหมายของคำนี้ " (xlUp) _" ได้อย่างไรคะ
พยายามดูตรงไหนคือการให้คัดลอกสูตรคะ งงมากๆๆค่ะ รบกวนอาจารย์อธิบายหน่อยจะได้ไหมคะ

ขอบพระคุณมากๆๆค่ะ
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

#62

Post by snasui »

snasui wrote: :D ลองปรับ Code เป็นตามด้านล่างครับ

Code: Select all

Sub Macro16()
    Range("A" & Rows.Count).End(xlUp) _
        .Resize(2, Columns.Count).FillDown
End Sub
จาก Code ด้านบน การวรรคแล้วตามด้วยเครื่องหมาย _ เป็นการบอกว่าเป็น Code ที่ต่อเนื่องกันแต่เนื่องจากยาวเกินไป จึงให้ตัดเพื่อไปเขียนต่อในบรรทัดถัดไป หากไม่จำเป็นต้องขึ้นบรรทัดใหม่สามารถเขียนได้เป็น

Code: Select all

Sub Macro16()
    Range("A" & Rows.Count).End(xlUp).Resize(2, Columns.Count).FillDown
End Sub
ความหมายคือ ให้เริ่มจากคอลัมน์ A รายการล่างสุดแล้วปรับขนาดเป็นสูง 2 บรรทัด ก็จะได้บรรทัดที่มีข้อมูลและบรรทัดว่าง โดยขยายความกว้างเท่ากับจำนวนคอลัมน์ทั้่งหมดแล้ว Copy ค่าแรกลงมาด้านล่าง
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

#63

Post by suka »

ขอบคุณค่ะอาจารย์ ทั้งสอนทั้งอธิบาย พอจะเข้าใจสิ่งที่อาจารย์สอนและลองนำมาใช้กับชีท PrinReport แทรกแถวได้ตามต้องการ
หากแต่ติดที่เซลล์ BR4:BW4 ต้องการให้สูตรรวมยอดจากบรรทัดที่แทรกเข้ามาใหม่ต้วยค่ะ อาจารย์คะสูตรควรต้องปรับอย่างไรคะ

ขอบพระคุณมากๆๆค่ะ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

#64

Post by snasui »

:D ไม่เข้าใจครับ ช่วยทำตัวอย่างคำตอบที่ต้องการมาด้วยครับ
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

#65

Post by suka »

อาจารย์คะ หมายถึงสูตรที่ชีท PrinReport เซลล์ BR4:BW4 ค่ะ
ยกตัวอย่างที่เซลล์ BR4 ก่อนคลิกแทรกบรรทัดมีตัวเลข18 ขณะที่ยังไม่คลิกเพิ่มบรรทัดสูตรที่เซลล์ BR4 จะเป็น =SUM(BR7:BR10)บรรทัดที่แทรกมาใหม่ในเซลล์ใหม่มีตัวเลข 8 เท่ากับที่เซลล์ BR4 ต้องได้ 26 ค่ะ หลังคลิกเพื่มอีกหนึ่งบรรทัด
ต้องการให้สูตรเซลล์ BR4 เปลี่ยนเป็น =SUM(BR7:BR11) หลังคลิกแทรกบรรทัด ไม่ทราบว่าพอจะเป็นไปได้ไหมคะ

ขอบคุณค่ะ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

#66

Post by snasui »

:lol: ถ้าเขียนสูตรไว้ล่วงหน้าเป็น

=SUM(BR7:BR65536)

เพื่อรองรับข้อมูลเท่าที่มี จะมีประเด็นอะไรไหมครับ
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

#67

Post by suka »

ค่ะอาจารย์ ลืมนึกถึงเรื่องเขียนสูตรไว้ล่วงหน้าเพื่อรองรับข้อมูลเลยค่ะ :lol:

หากจะขอเรียนถามถึงประเด็นใหม่ จากไฟล์ตัวอย่างที่ชืท PrinReport ตรง(ปุ่มแทรกบรรทัด)ขออาจารย์ช่วยด้วยเรื่องปรับ Code นี้

Code: Select all

 Range("A" & Rows.Count).End(xlUp).Resize(2, Columns.Count).FillDown
จากเดิมที่แทรกบรรทัดต่อจากด้านล่างสุดของบรรทัดสุดท้าย เปลี่ยนเป็น แทรกเหนือบรรทัดสุดท้ายคือแทรกด้านบนแทน พอจะเป็นไปได้ไหมคะ หากได้ก็จะหมดปัญหาเรื่องต้องเขียนสูตรล่วงหน้าและยังช่วยเรื่องที่ได้กำหนดพื้นที่พิมพ์รายงานด้วยค่ะ

ขอบคุณค่ะ
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

#68

Post by snasui »

:shock: หากไม่มีประเด็นในการเขียนสูตรไว้รองรับข้อมูลก็ไม่จำเป็นต้องแทรกบรรทัดครับ หากต้องการแทรก ลองเขียน Macro แล้วนำ Code มาปรับใช้ ติดตรงไหนก็มาถามกันต่อ ทุกครั้งที่มีปัญหาใหม่ ขอให้ลองทำเองก่อนครับ
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

#69

Post by suka »

อาจารย์คะ ได้ลองบันทึก Macro ผลคือแทรกบรรทัดใด้แต่การคัดลอกสูตรจะซ้ำที่เดิมไม่ขยับตามบรรทัดที่แทรกค่ะ

Code: Select all

Sub Macro14()
    Selection.EntireRow.Insert
    Range("A9:CF9").Select
    Selection.AutoFill Destination:=Range("A9:CF10"), Type:=xlFillDefault
    Range("A9:CF10").Select
End Sub
มารบกวนขออาจารย์ช่วยเหลือค่ะ ขอบคุณค่ะ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

#70

Post by snasui »

:D ลองทดสอบ Code ตามด้านล่างดูครับ

Code: Select all

Sub Macro14()
    Range("A" & Rows.Count).End(xlUp).EntireRow.Insert
    Range("A2").End(xlDown).Resize(2, Columns.Count).FillDown
End Sub
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

#71

Post by suka »

อาจารย์คะ รบกวนอีกแล้วค่ะไม่ทราบว่าทำอะไรผิดพลาดวาง Code ผิดที่หริออย่างไรก็มิทราบค่ะ

ได้นำ Code ไปวางที่ Module4 ชื่อ Button36_click ปุ่มแทรกบรรทัด ที่ชีท PrinReport ผลคือแทรกบรรทัดแต่ไม่คัดลอกสูตรให้ค่ะ

ขอบคุณค่ะ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

#72

Post by snasui »

:lol: ปรับ Code ที่บรรทัดนี้

Code: Select all

Range("A2").End(xlDown).Resize(2, Columns.Count).FillDown
เป็น

Code: Select all

Range("A6").End(xlDown).Resize(2, Columns.Count).FillDown
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

#73

Post by suka »

ขอบพระคุณมากค่ะอาจารย์ ลองแล้วได้ตรงตามที่ต้องการเลยค่ะ
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

#74

Post by suka »

อาจารย์คะ ขอเรียนถามจากไฟล์ตัวอย่างได้ขยายข้อมูลที่ชีท Form แล้วที่ชีท Template เกิดเป็น #REF! ได้แก้ที่เซลล์ U1:V1 ของชีท Template เพื่อให้ทราบจำนวนบรรทัดและคอลัมน์ ก็ยังไม่สามารถแก้ได้ ที่ถูกควรต้องแก้จุดใดคะ

ขอบคุณค่ะ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

#75

Post by snasui »

:D เกิดจากการนำตำแหน่งข้อมูลที่อยู่นอกช่วงข้อมูลมาแสดง ยกตัวอย่างเช่น

=Index(A1:A12,50)

การคีย์สูตรเช่นนี้จะเกิด Error #Ref! เพราะช่วงข้อมูล A1:A12 มีแค่ 12 ข้อมูล แต่ให้นำข้อมูลลำดับที่ 50 มาแสดง จึงไม่สามารถนำมาแสดงได้เพราะอยู่นอกช่วงข้อมูล

กรณีนี้จึงต้องเปลี่ยนช่วงข้อมูลที่สูตร Index เสียใหม่ให้ครอบคลุมถึงช่วงข้อมูลทั้งหมด เช่นที่ E98 สูตรเดิมคือ

=IF(ROWS(E$2:E98)>$W$1,"",INDEX(Form!$D$5:$D$12,INT((ROWS(E$2:E98)-1)/$V$1)+1))

ลองปรับเป็น

=IF(ROWS(E$2:E98)>$W$1,"",INDEX(Form!$D$5:$D$1200,INT((ROWS(E$2:E98)-1)/$V$1)+1))
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

#76

Post by suka »

ขอบคุณค่ะอาจารย์ ที่ชีท Template แก้เรียบร้อยแล้วค่ะ

มีอีกหนึ่งจุดต้องขอคำแนะนำเพิ่มค่ะ ที่ชีท Employee Data เซลล์ G5 ได้ใส่สูตร =LOOKUP(5,1/(Database!$E$2:$E$65536=$D14),Database!$I$2:$I$65536)
เพื่อต้องการดึงค่าแรงที่เป็นข้อมูลล่าสุดมาแสดงที่ชีท Employee Data เซลล์ G5 ปัญหาคือหากที่ชีท Database ยังไม่มีข้อมูลของพนักงานเข้าใหม่
ที่ชืท Form เซลล์ G5 จะเป็น #N/A จุดนี้ยังไม่สามารถแก้ได้ค่ะ
และอีกหนึ่งคำถามไม่ทราบว่าการใช้สูตรนี้ดึงค่าแรงที่มีการปรับเป็นระยะแบบนี้เป็นวิธีที่ถูกต้องไหมค่ะ

ขอบคุณค่ะ
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

#77

Post by snasui »

:D ลองตามนี้ครับ

ที่ชีท Employee Data เซลล์ G2 คีย์

=LOOKUP(9.99999999999999E+307,CHOOSE({1,2},0,LOOKUP(2,1/(Database!$E$2:$E$65536=$D2),Database!$H$2:$H$65536)))

Enter > Copy ลงด้านล่าง
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

#78

Post by suka »

อาจารย์คะ จากสูตรด้านบนมีข้อสงสัย ({1,2} และ (2,1/ ขอทราบความหมายทำไมต้องเป็น({1,2} และ (2,1/ ค่ะ
และจะนำมาปรับมาใช้กับชีท Employee ที่เซลล์ H2 ซึ่งเป็นค่าแรง OT จะใช้อย่างไรได้ถูกต้องค่ะ

ขอบคุณค่ะ
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

#79

Post by snasui »

:D สำหรับ Lookup(2,1/(...),...) ทำความเข้าใจได้จากที่นี่ครับ :arrow: http://snasui.blogspot.com/2009/12/blog-post_4428.html

ส่วนสูตร

=Lookup(9.99999999999999e307,Choose({1,2},0,Num))

เมื่อแกะสูตรจะได้เป็น

=Lookup(9.99999999999999e307,{0,Num})

หาก Num เป็น ค่าผิดพลาดจะนำ 0 มาแสดง

สังเกตว่า Choose จะช่วยทำให้ 0 และ Num เข้ามาเป็นค่าคงที่ Array อยู่ในเครื่องหมายปีกกาในฟังก์ชั่น Lookup
User avatar
suka
Silver
Silver
Posts: 918
Joined: Tue Nov 16, 2010 7:38 pm
Excel Ver: 2007,2021

Re: ขอความช่วยเหลือบันทึกการทำงานของพนักงานรายวันเป็นฐานข้อม

#80

Post by suka »

อาจารย์คะ ตาม Link ด้านบนอ่านอยู่หลายรอบก็ยังงงๆอยู่
ลองทำจากที่เข้าใจหากนำสูตรที่ชีท Employee Data เซลล์ G2 คีย์ปรับเปลี่ยนแค่ค่าที่ต้องการให้ค้นหาเท่านั้น ปรับมาใช้กับชีท Employee ที่เซลล์ H2 ซึ่งเป็นค่า OT
แก้เป็น=LOOKUP(9.99999999999999E+307,CHOOSE({1,2},0,LOOKUP(2,1/(Database!$E$2:$E$65536=$D2),Database!$I$2:$I$65536))) ไม่ทราบว่าเข้าใจถูกต้องหรือไม่คะ

ขอบคุณค่ะ
Post Reply