Page 1 of 2
การทำไฟล์ลางานของพนักงาน
Posted: Wed Nov 10, 2010 2:18 pm
by Meaonoi
สวัสดีค่ะ
พอดีมีไฟล์เกี่ยวกับการลางานของพนักงานมารบกวนหน่อยค่ะ
คือต้องการบันทึกการลางานของพนักงาน แล้วก็ให้อีกชีทนึงเป็นเหมือนสรุปโดยอัตโนมัติ
คือไฟล์ที่ส่งให้ดูนี้มันไม่อัตโนมัติค่ะ เพราะต้องมาจัดระเบียบเอง เป็นแมนน่วน ช่วยแนะนำหน่อยว่าต้องทำงัย
ขอบคุณมากค่ะ
Re: การทำไฟล์ลางานของพนักงาน
Posted: Wed Nov 10, 2010 6:44 pm
by snasui

ช่วยระบุด้วยครับว่า คีย์ในชีทใด แล้วให้ข้อมูลไปสรุปในชีทใด

Re: การทำไฟล์ลางานของพนักงาน
Posted: Thu Nov 11, 2010 9:41 am
by Meaonoi
อธิบายไม่ค่อยถูกค่ะ คือ ชีทแรก เหมือนข้อมูลดิบ เช่น พนักงานชื่ออะไร ลาวันไหนบ้าง ในแต่ละเดือน เราก็ใส่ลงไป เหมือนรายงานในแต่ละเดือน ส่วนชีท2เหมือนสรุปยอดรวมทั้งปีให้นายทราบว่าสรุปแล้ว ทั้งปีนี้ หรือ ในเดือนนี้นะใครลาอะไร ลาป่วย หรือลากิจ กี่วัน ประมาณนี้อ่ะค่ะ อาจจะอธิบายงงๆนะคะ ขอโทษด้วย
Re: การทำไฟล์ลางานของพนักงาน
Posted: Thu Nov 11, 2010 11:38 pm
by snasui

ลองตามไฟล์แนบครับ
1. Sheet1 เซลล์ H4 คีย์สูตรเพื่อแสดงเดือนเพียง 3 อักขระเพื่อให้ตรงกับ byAMFY10
=LEFT(LOOKUP(CHAR(255),A$4:A4),3)
Enter > Copy ลงด้านล่าง
2. ชีท byAMFY10 เซลล์ B4 คีย์สูตรเพื่อหาข้อมูลของแต่ละคน แต่ละเดือน แยกประเภทการลา
=SUMPRODUCT(--($A4=Sheet1!$B$4:$B$42),--(LOOKUP(CHAR(255),$B$2:B$2)=Sheet1!$H$4:$H$42),INDEX(Sheet1!$E$4:$F$42,0,MATCH(byAMFY10!B$3,Sheet1!$E$3:$F$3,0)))
Enter > Copy ไปด้านขวาและลงด้านล่าง
Re: การทำไฟล์ลางานของพนักงาน
Posted: Sat Nov 13, 2010 2:00 am
by Meaonoi
ขอบคุณค่ะ แต่ยังไม่ค่อยเข้าใจสูตรเท่าไหร่ ขอความหมายของแต่ละคำสั่งด้วยได้ไหมคะ เช่น SUMPRODUCT หมายถึงอะไร, LOOKUP, CHAR, INDEX, MATCH หมายถึงอะไร สั่งให้ทำอะไร รูปแบบการใช้ เขียนยังไง เพื่อเวลานำไปใช้จะได้เข้าใจ และสามารถปรับปรุงเขียนสูตรเองได้กับงานอื่น ๆ ค่ะ
ขอบคุณมากค่ะ
Re: การทำไฟล์ลางานของพนักงาน
Posted: Sat Nov 13, 2010 7:14 am
by snasui

ศึกษารูปแบบไวยากรณ์และความหมายอย่างละเอียดตาม Link ด้านล่างครับ สำหรับการนำมาใช้ในลักษณะที่ผมเขียนสูตรให้นี้ เป็นการนำมาใช้แบบประยุกต์ ซึ่งจะมีความซับซ้อนขึ้น
จะอธิบายในสิ่งที่ใช้นอกเหนือจากการใช้งานปกตินะครับ
1. LOOKUP(CHAR(255),$B$2:B$2)
หมายถึงให้หา
ค่าสุดท้ายที่เป็นอักขระในช่วง $B$2:
B$2 สังเกตว่า B$2 ตัว B ไม่ได้ Lock เมื่อเรา Copy ข้อมูลไปทางขวามันก็จะเป็น $B$2:
C$2, $B$2:
D$2... ไปเรื่อย ๆ
2. INDEX(Sheet1!
$E$4:$F$42,0,MATCH(byAMFY10!B$3,Sheet1!$E$3:$F$3,0))
หมายถึงให้นำช่วงข้อมูล E4:E42 หรือ F4:F42 มาเป็นผลลัพธ์ ซึ่งขึ้นอยู่กับว่าสูตร MATCH(byAMFY10!B$3,Sheet1!$E$3:$F$3,0) จะให้ผลลัพธ์เป็นค่าใดใน 2 ค่า คือ 1 และ 2
หากได้ 1 ก็นำช่วง E4:E42 มาเป็นผลลัพธ์ หากได้ 2 ก็นำ F4:F42 มาเป็นผลลัพธ์
ฟังก์ชั่น Match จะให้ค่าเป็น
ลำดับที่ จากสูตร
MATCH(byAMFY10!B$3,Sheet1!$E$3:$F$3,0)
หมายถึง byAMFY10!B$3 อยู่ใน
ลำดับที่เท่าไรของ Sheet1!$E$3:$F$3
Link สำหรับศึกษาสูตรต่าง ๆ
Index
https://support.microsoft.com/en-us/off ... 6b061328bd
Match
https://support.microsoft.com/en-us/off ... 3f4a37673a
Lookup
https://support.microsoft.com/en-us/off ... 9d5e3864cb
Char
https://support.microsoft.com/en-us/off ... 133f9b837a
Re: การทำไฟล์ลางานของพนักงาน
Posted: Mon Nov 15, 2010 9:15 am
by Meaonoi
ขอบคุณมากๆค่ะ
Re: การทำไฟล์ลางานของพนักงาน
Posted: Tue Jul 17, 2012 5:20 pm
by kiangofdeath
ผมทำไฟล์แบบนี้โดยใช้บอรด์นี้เป็นต้นแบบไม่ได้เลยครับ ไม่ทราบว่าติดตรงไหน ขอความกรุณาดูให้ทีได้ไหมครับ เพิ่มเติมนะครับ ลาพักร้อนมากกว่า1วันและ ลาคลอดเป็นเดือนอะไรแบบนี้ด้วยนะครับ
Re: การทำไฟล์ลางานของพนักงาน
Posted: Tue Jul 17, 2012 5:28 pm
by snasui

ช่วยเขียนอธิบายว่า ชีทใด เซลล์ใด มีปัญหาอะไร คำตอบที่ถูกต้องคือค่าใด ด้วยเงื่อนไขใด จะได้เข้าใจตรงกันครับ
Re: การทำไฟล์ลางานของพนักงาน
Posted: Tue Jul 17, 2012 5:32 pm
by ysamroeng
kiangofdeath wrote:ผมทำไฟล์แบบนี้โดยใช้บอรด์นี้เป็นต้นแบบไม่ได้เลยครับ ไม่ทราบว่าติดตรงไหน ขอความกรุณาดูให้ทีได้ไหมครับ เพิ่มเติมนะครับ ลาพักร้อนมากกว่า1วันและ ลาคลอดเป็นเดือนอะไรแบบนี้ด้วยนะครับ
ยังไม่ได้ดูในรายละเอียด แต่ที่แน่ๆ ข้อมูลของคุณ กับของคุณ Meaonoi นั้น ลักษณะและตำแหน่งข้อมูลไม่เหมือนกัน
(เช่น ที่ชีท byAMFY10 ของคุณเริ่มที่แถวที่ 6 แต่ต้นฉบับเขาเริ่มที่แถวที่ 4) ดังนั้น คุณจะมาลอกสูตรเดียวกันไปใช้ โดยไม่ปรับให้ตรงกับงานคุณ คงไม่ได้ผลลัพธ์(หรือได้ แต่อาจจะไม่ถูกต้อง)
ยังงัยก็ลองตรวจสอบดูอีกที หรือไม่ก็ลองทำตารางให้เหมือนกับของเดิมเค้าก่อน ศึกษาจนเข้าใจแล้วค่อยเอาไปปรับ
Re: การทำไฟล์ลางานของพนักงาน
Posted: Tue Jul 17, 2012 10:34 pm
by kiangofdeath
ครับ ถึงตำแหน่งจะไม่เหมือนกันแต่ผมก็ปรับเปลี่ยนเป็นตำแหน่งของผมเลยครับ ผมเอาตามแบบข้อมูลของคุณMeaonoi เลยครับแต่ผมเพิ่ม ลากิจเข้าอย่างเดียวเลยครับ และก็เพิ่มลาคลอดเป็น3เดือนด้วยครับ
และผมปรับเปลียนให้ตรงกับไฟลของผมด้วยครับ
Re: การทำไฟล์ลางานของพนักงาน
Posted: Tue Jul 17, 2012 10:52 pm
by snasui

ลองตามนี้ครับ
เซลล์ AB6 คีย์หรือ Copy สูตรด้านล่างไปวาง
=SUMPRODUCT(--($J6=Sheet1!$B$4:$B$150),--(LOOKUP(CHAR(255),$AB$4:AB$4)=Sheet1!$J$4:$J$150),INDEX(Sheet1!$F$4:$H$150,0,MATCH(byAMFY10!AB$5,Sheet1!$F$3:$H$3,0)))
Enter > Copy ไปด้านขวาและลงด้านล่าง
Re: การทำไฟล์ลางานของพนักงาน
Posted: Tue Jul 17, 2012 11:06 pm
by kiangofdeath
โอ้ ขอบพระคุณมากครับ ตาถั่วจังเลยเรา สำเร็จแล้วครับ
Re: การทำไฟล์ลางานของพนักงาน
Posted: Wed Jul 18, 2012 1:25 pm
by คน-ควนรู
ถ้าใช้ Sumifs สูตรจะเป็นอย่างไรครับ
Re: การทำไฟล์ลางานของพนักงาน
Posted: Wed Jul 18, 2012 1:37 pm
by bank9597
คน-ควนรู wrote:ถ้าใช้ Sumifs สูตรจะเป็นอย่างไรครับ

รู้สึกว่า Sumifs แบบนี้ไม่สามารถหาค่าแบบเงื่อนไขซับซ้อนได้ครับ ต้องใช้ Sumproduct หรือ Sum(If ครับ
สำหรับ สูตร Sum(if
ที่ AB6 คีย์ =SUM(IF($J6=Sheet1!$B$4:$B$150,IF(LOOKUP(CHAR(255),$AB$4:AB$4)=Sheet1!$J$4:$J$150,INDEX(Sheet1!$F$4:$H$150,0,MATCH(byAMFY10!AB$5,Sheet1!$F$3:$H$3,0)))))
กด Ctrl+Shift+Enter
Re: การทำไฟล์ลางานของพนักงาน
Posted: Wed Jul 18, 2012 2:09 pm
by kiangofdeath
แล้วถ้า ผมเพิ่ม แทรกข้อคิดเห็นในช่องF4 ให้ไปปรากฏในชีทbyAMFY10 ด้วยต้องทำอย่างไรครับ
Re: การทำไฟล์ลางานของพนักงาน
Posted: Wed Jul 18, 2012 2:26 pm
by bank9597

คงต้องพึ่ง VBA เข้ามาช่วยครับ ลองเขียนมาดูกันก่อนครับ
Re: การทำไฟล์ลางานของพนักงาน
Posted: Wed Jul 18, 2012 2:30 pm
by kiangofdeath
โอ้ว VBA เลยหรอขอผ่านละกันครับไม่รู้เรื่องเลยครับ
Re: การทำไฟล์ลางานของพนักงาน
Posted: Wed Jul 18, 2012 3:29 pm
by bank9597
kiangofdeath wrote:โอ้ว VBA เลยหรอขอผ่านละกันครับไม่รู้เรื่องเลยครับ

ลองรอดูท่านอื่นมาตอบครับ เผื่อจะมีวิธีที่ง่ายกว่านั้นอีกครับ
Re: การทำไฟล์ลางานของพนักงาน
Posted: Wed Jul 18, 2012 6:18 pm
by snasui
คน-ควนรู wrote:ถ้าใช้ Sumifs สูตรจะเป็นอย่างไรครับ

ที่ AB6 คีย์
=SUMIFS(INDEX(Sheet1!$F$4:$H$150,0,MATCH(byAMFY10!AB$5,Sheet1!$F$3:$H$3,0)),Sheet1!$B$4:$B$150,$J6,Sheet1!$J$4:$J$150,LOOKUP(CHAR(255),$AB$4:AB$4))
Enter > Copy สูตรไปยังเซลล์ที่เกี่ยวข้อง