Page 1 of 2
อยากจะลดขั้นตอนการคีย์ของเด็กให้ทำงานง่ายและเร็วทำอย่างไร
Posted: Fri Jul 23, 2010 11:09 am
by godman
ผมมีข้อมูลบันทึกผลประเมินของเด็กทั้งบริษัทในแต่ละวันต้องคีย์ ชื่อ แผนก กะ คะแนนสอบวิชา GRR ซึ่งเป็นแค่ทักษะเดียวSheet GRR TABLEซึ่งเป็น Sheet รวมของทุกmodel แต่จริงๆเราต้องนำข้อมูลพวกนี้ไปแยกย่อยใส่เพิ่ม ผมเลยสร้าง Sheet โดยแบ่งแต่ละตาม Model เช่น Damper ARM เป็นต้นเพื่อไปใส่ทักษะอื่นๆ อีก 8-9 ทักษะซึ่งคะแนน แล้วก็ค่อยหาคะแนนรวมซึ่งจะกลายเป็นทักษะรวมของเด็ก แต่ละคน
2.คนที่ได้คะแนนไม่ถึง 4 จะต้องเรียกมาสอนใหม่ ผมก็ใช้วิธี Copy เอาคนที่ได้คะแนนไม่ถึง 4 ไปสอนและก็แยกไปลงใน Sheet ที่ต่อท้ายว่า Rev1,2 ถ้าสอบ 3 ครั้งก็จะเป็น Rev3
อยากทราบว่า
1.มีวิธีใหนบ้างที่ผมจะไม่ต้องพิมพ์ข้อมูลเดิมๆซ้ำ
2.ผมอยากดึงคนที่อยู่ใน Sheet GRR Table ให้ไปอยู่อีก Sheet ตาม Model ทำได้อย่างไร
3.ในแต่ละ Sheet ย่อย ผมอยากดึงคนที่ได้ได้เกรดต่ำกว่า 4 ไปใส่ใน Sheet อื่นแล้วต่อว่าเป็นการสอบซ่อม ซึ่งจะลงท้ายว่า Rev 1 2 3 เป็นต้น เช่น Sheet DamperVMI Rev0 ก็หมายควมว่า ดึงจาก Sheet หลักแล้วเลือกเอาแต่คนที่ Colump Product ว่า อยู่ Damper เป็นต้น ส่วน Rev1 คือสอบซ่อมครั้งที่ 1
ผมจะปรับปรุงอย่างไรให้ทำงานเร็วและไม่ซ้ำซ้อน ตอนนี้ผมมีปัญหามากและเสียเวลา แต่ผมไม่ถนัด Access ไม่ทราบว่าถ้าใช้ Excel จะเก็บข้อมูลลักษณะนี้ดีไหม
Re: อยากจะลดขั้นตอนการคีย์ของเด็กให้ทำงานง่ายและเร็วทำอย่างไ
Posted: Fri Jul 23, 2010 6:30 pm
by snasui
ผมอ่านแล้วยังไม่ค่อยเข้าใจในเรื่องการเก็บข้อมูลเท่าไรครับ ลองอธิบายขั้นตอนการทำงานย่อย ๆ มาหน่อยครับว่าเป็นอย่างไร หรือยกตัวอย่างมาสัก 1 Sheet ว่าทำงานอย่างไร นำข้อมูลใดมาใส่ตรงส่วนใด
สำหรับตารางข้อมูลที่แยกทำเป็น DAMPER VMI Rev.x เบื้องต้น ผมเห็นว่าสามารถทำอยู่ใน Sheet เีดียวกันได้เลยทุกทักษะโดยการเก็บข้อมูลทักษะลงไปด้านล่างในทางบรรทัด ซึ่ง 1 คนจะมี 13 ทักษะ แต่ละทักษะได้คะแนนเท่าไรก็กรอกไป แล้วค่อยทำ PivotTable เพื่อแยกข้อมูลเป็นรายคน รายแผนก หรือรายอื่น ๆ แล้วแต่ต้องการดูข้อมูล
สำหรับหน้ากรอกข้อมูลอาจจะทำฟอร์มขึ้นมา 1 ฟอร์มแล้วใช้ Macro ในการวางข้อมูลลง Database หลังจากกรอกเรียบร้อยแล้วครับ
Re: อยากจะลดขั้นตอนการคีย์ของเด็กให้ทำงานง่ายและเร็วทำอย่างไ
Posted: Fri Jul 23, 2010 7:31 pm
by godman
โอ้ เริ่มเห็นแสงสว่างรำไรแล้วครับ จะอธิบายต่อไป สักครู่ครับ
Re: อยากจะลดขั้นตอนการคีย์ของเด็กให้ทำงานง่ายและเร็วทำอย่างไ
Posted: Fri Jul 23, 2010 7:52 pm
by godman
คือว่า Sheet 1 คือ Sheet รวมซึ่งผมมีพนักงานอยู่ 4 คนแต่ะลคนจะดู 1 PRODUCT ซึ่ง มีดังนี้ 1.DAMPER 2.ARM 3.IB 4.BW แต่ Sheet รวมนี้ผมจะให้ทั้ง 4 คนมากรอกแบบไม่แบ่งแยก จากนั้นเด็กผมก็จะ COPY คนของตนเองที่ผ่านการอบรม ไปไว้ใน Sheet REV 0 ซึ่งเป็น sheet ของแต่ละคนจริงๆ แล้วก็จะทำการกรอก คะแนนของทักษะอันอื่นอีก 12 ทักษะที่เหลืออยู่ ครานี้ก็จะดูว่ามีใครคนใหนมันกได้เกรดต่ำกว่า 4 ไหม ถ้าตำ่กว่าจะทำการอบรมซ่อม แล้วพอได้คะแนนเท่าำหร่ก็จะ ลงใน Sheet ใหม่โดยใช้ชื่อว่า rev 1 2 3 ตามจำนวนครั้งที่เด็กสอบซ่อมจนกว่าจะผ่าน สอนผมทำด้วยครับ ตอนนี้มันทำงานซ้ำซ้อนกันมาก เสียเวลามากกับการลงข้อมูล
Re: อยากจะลดขั้นตอนการคีย์ของเด็กให้ทำงานง่ายและเร็วทำอย่างไ
Posted: Sat Jul 24, 2010 9:49 am
by snasui
ผมทำตัวอย่างไฟล์มาให้ตามแนบด้านล่างครับ
โดยมีการแยก Data ออกเป็น Sheet เช่น
ข้อมูลเกี่ยวกับบุคคลก็แยกไ้ว้ที่ Sheet HrProfile
ข้อมูลเกี่ยวกับ Course การอบรมแยกไว้ที่ Sheet Course
จากนั้นสร้างหน้าจอในการกรอกข้อมูลพร้อมสูตรเพื่อดึงข้อมูลและคำนวณค่าที่เกี่ยวข้อง ค่าที่กรอกจะถูกเชื่อมโยงไปยัง Sheet Template เพื่อเรียงข้อมูลและง่ายต่อการจัดการ
เมื่อกดปุ่ม Record Data ข้อมูลที่กรอกไว้จะถูกนำไปวางที่ Sheet Database ต่อท้ายข้อมูลที่มีอยู่เดิมและทำการ Refresh Sheet PivotReport ให้อัตโนมัติ
สำหรับข้อมูลที่ทำมาเป็นตัวอย่างนี้ ผมแปลงจากข้อมูลที่แนบมาให้หากตรวจสอบแล้วเห็นว่าถูกต้องสามารถนำไปใช้จริงได้เลย แต่มีบางค่าที่จะต้อง Update เ้ข้าไปให้ตรงกับข้อมูลจริง เช่น รหัสพนักงาน นอกจากนี้มีข้อมูลวันที่ที่ได้คีย์ไว้เป็น Text ควรปรับให้เป็นวันที่ที่เป็น Serial Number ดังเ่ช่นข้อมูลวันที่อื่น ๆ เพื่อประโยชน์ในการสรุปข้อมูลเป็นงวด ๆ ใน PivotTable
Re: อยากจะลดขั้นตอนการคีย์ของเด็กให้ทำงานง่ายและเร็วทำอย่างไ
Posted: Sat Jul 24, 2010 10:12 am
by godman
I LOVE YOU SO MUCH ผมคิดว่าผมจะทดลองใช้ดูก่อน ถ้าได้ผลประการใดผมจะมาหาใหม่ครับ ผมจะต้องกลับมารายงานให้ทราบแน่ๆ อาจารย์ได้ทำคุณประโยชน์ให้กับสังคมบริหารมากเหลือเกิน ขอบพระคุณในขั้นต้นด้วยใจจริง
Re: อยากจะลดขั้นตอนการคีย์ของเด็กให้ทำงานง่ายและเร็วทำอย่างไ
Posted: Sat Jul 24, 2010 10:45 am
by godman
คือผมไปเพิ่มชื่อพนักงานใหม่ ชื่อ Theeranart และใส่ข้อมูลใน Sheet HRprofile แล้วทำไมเมื่อมาหน้า Form มันจึงหาข้อมูลของชื่อนี้ไม่เจอครับ
2.ผมหาปุ่ม Paste ใน Form ไม่พบ
3.ลำดับการคีย์ข้อมูลคือ
3.1 Sheet HRprofile 3.2 Sheet Form เท่านั้นใช่ไหมครับ
4.Factor มีความหมายว่าอย่างไรครับ
Re: อยากจะลดขั้นตอนการคีย์ของเด็กให้ทำงานง่ายและเร็วทำอย่างไ
Posted: Sat Jul 24, 2010 10:55 am
by snasui
theeranart wrote:คือผมไปเพิ่มชื่อพนักงานใหม่ ชื่อ Theeranart และใส่ข้อมูลใน Sheet HRprofile แล้วทำไมเมื่อมาหน้า Form มันจึงหาข้อมูลของชื่อนี้ไม่เจอครับ
2.ผมหาปุ่ม Paste ใน Form ไม่พบ
3.ลำดับการคีย์ข้อมูลคือ
3.1 Sheet HRprofile 3.2 Sheet Form เท่านั้นใช่ไหมครับ
4.Factor มีความหมายว่าอย่างไรครับ
ปุ่ม Paste คือ ปุ่ม
Record Data ครับ
ลำดับการคีย์ข้อมูลถูกต้องแล้วครับ ถ้าพนักงานเพิ่มก็ต้องไปเพิ่มใน Profile หากมีคอร์สเพิ่มก็ต้องไปเพิ่มใน Course
Factor คือตัวที่เอาไปทำการหารคะแนน จากไฟล์เดิม มีทั้่ง 24 และ 28
สูตรการดึงข้อมูลผมอาจจะใส่ขอบเขตไว้แค่ข้อมูลที่มี ถ้าเพิ่มข้อมูลพนักงานต้องแก้ไขสูตรครับขยายช่วงข้อมูลออกไป เช่น C2 ใน Sheet Form สูตรเดิม
=VLOOKUP(C4,HrProfile!$A$2:$E$
195,2,0)
หากเพิ่มพนักงานเข้ามา 1 คนก็ต้องปรับเป็น
=VLOOKUP(C4,HrProfile!$A$2:$E$
196,2,0) เป็นต้น
หากไม่ต้องปรับบ่อย ๆ ก็กำหนดชื่อให้กับช่วงข้อมูลได้ อย่างที่ผมทำตัวอย่างไว้ โดยให้ชื่อไว้กับข้อมูลใน Sheet Database ซึ่งไม่ว่าข้อมูลจะเพิ่มหรือลด ชื่อนี้จะขยายเพิ่มลดตามข้อมูลที่มี สามารถนำชื่อนี้ไปใช้ในสูตรโดยไม่ต้องแก้ไขบ่อย ๆ ครับ
สามารถเ้ข้าไปดูการตั้งชื่อได้โดยเ้ข้าเมนู Insert > Name > Define ครับ
Re: อยากจะลดขั้นตอนการคีย์ของเด็กให้ทำงานง่ายและเร็วทำอย่างไ
Posted: Sat Jul 24, 2010 11:13 am
by godman
คือ Full point ของผมมันไม่ได้เต็ม 4 นะครับ เฉพาะ GR&R Test เท่านั้นที่เต็ม 4 ส่วนอันอื่นคะแนนเต็มที่ 2 คะแนนครับ
แสดงว่าผมต้องเข้าไปแก้ใน Sheet Database ของทุกคนเลยใช่ไหมครับ
Re: อยากจะลดขั้นตอนการคีย์ของเด็กให้ทำงานง่ายและเร็วทำอย่างไ
Posted: Sat Jul 24, 2010 11:16 am
by snasui
ถูกต้องครับ ถ้าจะใช้ไฟล์นี้เป็นตัวจริงก็ต้องปรับให้เป็นตามที่ใช้จริง ทบทวนค่าการคำนวณต่าง ๆ เพื่อให้ตรงกับงานจริงครับ อันนี้ทำมาเป็นตัวอย่างเท่านั้นน่ะครับ
Re: อยากจะลดขั้นตอนการคีย์ของเด็กให้ทำงานง่ายและเร็วทำอย่างไ
Posted: Sat Jul 24, 2010 11:24 am
by godman
ขอบพระคุณเป็นอย่างสูงครับ คิดว่านำไปใช้งานได้จริงครับ ส่วนรายละเอียดจะขอเวลาศีกษาและปรับแต่งค่าการคำนวณต่างๆดู คิดว่าต้องทำงานหนักก่อนครับ ถ้าไม่เข้าใจจริงๆจะมาถามใหม่แต่คิดว่าอีกสัก 2-3 วันะหนะครับ
Re: อยากจะลดขั้นตอนการคีย์ของเด็กให้ทำงานง่ายและเร็วทำอย่างไ
Posted: Wed Oct 20, 2010 7:28 pm
by godman
Sub PasteData()
Dim i As Integer
Dim rSource As Range
Dim rTarget As Range
i = Worksheets("Form30").Range("D6").Value
With Worksheets("Template30")
Set rSource = .Range(.Range("A2"), .Range("M" & i + 1))
End With
With Worksheets("Data30")
Set rTarget = .Range("A65536").End(xlUp).Offset(1, 0)
End With
Application.ScreenUpdating = False
rSource.Copy
rTarget.PasteSpecial xlPasteValues
Application.CutCopyMode = False
Application.ScreenUpdating = False
MsgBox "Paste Finish"
Worksheets("PivotReport").PivotTables("PivotTable1"). _
PivotCache.Refresh
End Sub
คือผมลอกไปใส่ใน อีก sheet ครับชื่อ Sheet Data30 , template30 , จาก Form30 ทำไมมันฟ้องว่าผิดพลาดครับ ตรง i
Re: อยากจะลดขั้นตอนการคีย์ของเด็กให้ทำงานง่ายและเร็วทำอย่างไ
Posted: Wed Oct 20, 2010 7:41 pm
by snasui
ลองส่งไฟล์ตัวอย่างมาดูครับ จะได้เห็นว่ามีการปรับค่าอะไรไว้อย่างไร วางตำแหน่ง Code ตรงไหน ฯลฯ
Re: อยากจะลดขั้นตอนการคีย์ของเด็กให้ทำงานง่ายและเร็วทำอย่างไ
Posted: Wed Oct 20, 2010 7:45 pm
by godman
มันใหญ่ครับ ส่งไม่ได้
ลดขนาดแล้ว ก็ยังเกิน
Re: อยากจะลดขั้นตอนการคีย์ของเด็กให้ทำงานง่ายและเร็วทำอย่างไ
Posted: Wed Oct 20, 2010 7:48 pm
by snasui
ตัดมาเป็นตัวอย่างก็ได้ครับ เอาเฉพาะ Sheet ที่เกี่ยวข้อง Save As มาเป็นอีกไฟล์ ลบฐานข้อมูลทิ้งไปก่อนก็ได้ครับ
Re: อยากจะลดขั้นตอนการคีย์ของเด็กให้ทำงานง่ายและเร็วทำอย่างไ
Posted: Wed Oct 20, 2010 9:27 pm
by godman
ไฟล์ครับ ช่วยแนะนำหน่อยครับว่าผมควรทำแบบนี้หรือไม่ คือผมอยากให้มันอยู่ไฟล์เดียวกันเพราะว่ามันเกี่ยวข้องกันหมดและผมอยากลดขั้นตอนการทำงานครับ
Re: อยากจะลดขั้นตอนการคีย์ของเด็กให้ทำงานง่ายและเร็วทำอย่างไ
Posted: Wed Oct 20, 2010 9:42 pm
by snasui
ที่ Code ไม่ทำงานก็เพราะว่า Form กับ Form30 หน้าตาไม่เหมือนกันเลย ตำแหน่งเซลล์ต่าง ๆ ก็ไม่เหมือนกัน ลักษณะงานเช่นนี้ต้องปรับปรุงเปลี่ยนแปลง Code ให้เข้ากับงานใหม่ครับ ไม่สามารถเอาไปใช้ตรง ๆ โดยการเปลี่ยนเพียงชื่อ Sheet
ลองเพิ่มคำอธิบายมาครับว่าต้องการจะนำช่วงข้อมูลใดไปไว้ที่ใด นอกจากนี้ผมไม่เจอชีทที่ชื่อว่า Template30 ตามที่เขียนไว้ใน Code ครับ
Re: อยากจะลดขั้นตอนการคีย์ของเด็กให้ทำงานง่ายและเร็วทำอย่างไ
Posted: Wed Oct 20, 2010 9:53 pm
by godman
ขอบคุณครับขอเวลาเขียนคำถามก่อนครับ
Re: อยากจะลดขั้นตอนการคีย์ของเด็กให้ทำงานง่ายและเร็วทำอย่างไ
Posted: Mon Mar 19, 2012 9:51 pm
by godman
ขอรบกวนครับ จาก code นี้ถ้าจะเปลี่ยนความต้องการเป็นว่า ให้ paste data ทับข้อมูลเดิม โดยมีข้อแม้ว่าชื่อเดิม พนักงานคนเดิม แต่คะแนนเปลี่ยน จะเปลี่ยน code ตรงใหนดีครับ
Code: Select all
[code]Sub PasteData()
Dim i As Integer
Dim rSource As Range
Dim rTarget As Range
i = Worksheets("Form").Range("D6").Value
With Worksheets("Template")
Set rSource = .Range(.Range("A2"), .Range("M" & i + 1))
End With
With Worksheets("Database")
Set rTarget = .Range("A65536").End(xlUp).Offset(1, 0)
End With
Application.ScreenUpdating = False
rSource.Copy
rTarget.PasteSpecial xlPasteValues
Application.CutCopyMode = False
Application.ScreenUpdating = False
MsgBox "Paste Finish"
Worksheets("PivotReport").PivotTables("PivotTable1"). _
PivotCache.Refresh
End Sub
[/code]
Re: อยากจะลดขั้นตอนการคีย์ของเด็กให้ทำงานง่ายและเร็วทำอย่างไ
Posted: Tue Mar 20, 2012 12:05 am
by snasui
ลองดูตัวอย่างการปรับ Code ตามด้านล่างครับ
Code: Select all
Sub PasteData()
Dim i As Integer
Dim rSource As Range
Dim rTarget As Range
On Error Resume Next
i = Worksheets("Form").Range("D6").Value
With Worksheets("Template")
Set rSource = .Range(.Range("A2"), .Range("M" & i + 1))
End With
With Worksheets("Database")
Set rTarget = .Range("A65536").End(xlUp).Offset(1, 0)
End With
Application.ScreenUpdating = False
Dim msg As Byte
msg = MsgBox(prompt:="Edit data click ""Yes"", Add data click ""No"".", _
Buttons:=vbYesNo, Title:="Edit or Replace?")
rSource.Copy
If msg = vbNo Then
rTarget.PasteSpecial xlPasteValues
Else
Dim lng As Long
lng = Application.Match(Sheets("Form").Range("C2"), _
Sheets("Database").Range("C:C"), 0)
If Err > 0 Then
MsgBox "You can't edit data, please try again."
Exit Sub
End If
Sheets("Database").Range("A" & lng).PasteSpecial xlPasteValues
End If
Application.CutCopyMode = False
Application.ScreenUpdating = False
MsgBox "Paste Finish"
Worksheets("PivotReport").PivotTables("PivotTable1"). _
PivotCache.Refresh
End Sub