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
:D ผมอ่านแล้วยังไม่ค่อยเข้าใจในเรื่องการเก็บข้อมูลเท่าไรครับ ลองอธิบายขั้นตอนการทำงานย่อย ๆ มาหน่อยครับว่าเป็นอย่างไร หรือยกตัวอย่างมาสัก 1 Sheet ว่าทำงานอย่างไร นำข้อมูลใดมาใส่ตรงส่วนใด

สำหรับตารางข้อมูลที่แยกทำเป็น DAMPER VMI Rev.x เบื้องต้น ผมเห็นว่าสามารถทำอยู่ใน Sheet เีดียวกันได้เลยทุกทักษะโดยการเก็บข้อมูลทักษะลงไปด้านล่างในทางบรรทัด ซึ่ง 1 คนจะมี 13 ทักษะ แต่ละทักษะได้คะแนนเท่าไรก็กรอกไป แล้วค่อยทำ PivotTable เพื่อแยกข้อมูลเป็นรายคน รายแผนก หรือรายอื่น ๆ แล้วแต่ต้องการดูข้อมูล

สำหรับหน้ากรอกข้อมูลอาจจะทำฟอร์มขึ้นมา 1 ฟอร์มแล้วใช้ Macro ในการวางข้อมูลลง Database หลังจากกรอกเรียบร้อยแล้วครับ :mrgreen:

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
:D ผมทำตัวอย่างไฟล์มาให้ตามแนบด้านล่างครับ

โดยมีการแยก Data ออกเป็น Sheet เช่น

ข้อมูลเกี่ยวกับบุคคลก็แยกไ้ว้ที่ Sheet HrProfile
ข้อมูลเกี่ยวกับ Course การอบรมแยกไว้ที่ Sheet Course

จากนั้นสร้างหน้าจอในการกรอกข้อมูลพร้อมสูตรเพื่อดึงข้อมูลและคำนวณค่าที่เกี่ยวข้อง ค่าที่กรอกจะถูกเชื่อมโยงไปยัง Sheet Template เพื่อเรียงข้อมูลและง่ายต่อการจัดการ

เมื่อกดปุ่ม Record Data ข้อมูลที่กรอกไว้จะถูกนำไปวางที่ Sheet Database ต่อท้ายข้อมูลที่มีอยู่เดิมและทำการ Refresh Sheet PivotReport ให้อัตโนมัติ

สำหรับข้อมูลที่ทำมาเป็นตัวอย่างนี้ ผมแปลงจากข้อมูลที่แนบมาให้หากตรวจสอบแล้วเห็นว่าถูกต้องสามารถนำไปใช้จริงได้เลย แต่มีบางค่าที่จะต้อง Update เ้ข้าไปให้ตรงกับข้อมูลจริง เช่น รหัสพนักงาน นอกจากนี้มีข้อมูลวันที่ที่ได้คีย์ไว้เป็น Text ควรปรับให้เป็นวันที่ที่เป็น Serial Number ดังเ่ช่นข้อมูลวันที่อื่น ๆ เพื่อประโยชน์ในการสรุปข้อมูลเป็นงวด ๆ ใน PivotTable :mrgreen:

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 มีความหมายว่าอย่างไรครับ
:D ปุ่ม 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 ครับ :mrgreen:

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
:D ถูกต้องครับ ถ้าจะใช้ไฟล์นี้เป็นตัวจริงก็ต้องปรับให้เป็นตามที่ใช้จริง ทบทวนค่าการคำนวณต่าง ๆ เพื่อให้ตรงกับงานจริงครับ อันนี้ทำมาเป็นตัวอย่างเท่านั้นน่ะครับ :mrgreen:

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
:D ลองส่งไฟล์ตัวอย่างมาดูครับ จะได้เห็นว่ามีการปรับค่าอะไรไว้อย่างไร วางตำแหน่ง Code ตรงไหน ฯลฯ :mrgreen:

Re: อยากจะลดขั้นตอนการคีย์ของเด็กให้ทำงานง่ายและเร็วทำอย่างไ

Posted: Wed Oct 20, 2010 7:45 pm
by godman
มันใหญ่ครับ ส่งไม่ได้
ลดขนาดแล้ว ก็ยังเกิน

Re: อยากจะลดขั้นตอนการคีย์ของเด็กให้ทำงานง่ายและเร็วทำอย่างไ

Posted: Wed Oct 20, 2010 7:48 pm
by snasui
:shock: ตัดมาเป็นตัวอย่างก็ได้ครับ เอาเฉพาะ Sheet ที่เกี่ยวข้อง Save As มาเป็นอีกไฟล์ ลบฐานข้อมูลทิ้งไปก่อนก็ได้ครับ :P

Re: อยากจะลดขั้นตอนการคีย์ของเด็กให้ทำงานง่ายและเร็วทำอย่างไ

Posted: Wed Oct 20, 2010 9:27 pm
by godman
ไฟล์ครับ ช่วยแนะนำหน่อยครับว่าผมควรทำแบบนี้หรือไม่ คือผมอยากให้มันอยู่ไฟล์เดียวกันเพราะว่ามันเกี่ยวข้องกันหมดและผมอยากลดขั้นตอนการทำงานครับ

Re: อยากจะลดขั้นตอนการคีย์ของเด็กให้ทำงานง่ายและเร็วทำอย่างไ

Posted: Wed Oct 20, 2010 9:42 pm
by snasui
:D ที่ Code ไม่ทำงานก็เพราะว่า Form กับ Form30 หน้าตาไม่เหมือนกันเลย ตำแหน่งเซลล์ต่าง ๆ ก็ไม่เหมือนกัน ลักษณะงานเช่นนี้ต้องปรับปรุงเปลี่ยนแปลง Code ให้เข้ากับงานใหม่ครับ ไม่สามารถเอาไปใช้ตรง ๆ โดยการเปลี่ยนเพียงชื่อ Sheet

ลองเพิ่มคำอธิบายมาครับว่าต้องการจะนำช่วงข้อมูลใดไปไว้ที่ใด นอกจากนี้ผมไม่เจอชีทที่ชื่อว่า Template30 ตามที่เขียนไว้ใน Code ครับ :mrgreen:

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
:D ลองดูตัวอย่างการปรับ 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