Page 1 of 1
ขอเรียนปรึกษาและแก้ไข
Posted: Sat Apr 02, 2011 9:45 pm
by mkong2516
เรียนท่านอาจารย์
ผมมีข้อมูลตัวอย่างที่แนบมาซี่ง
-ผมไม่รู้ว่าผมเก็บข้อมูลเหมาะสมหรือไม่
-ผมทำงานลักษณะนี้ทุก ๆ เดือนแล้วก็พิมพ์รายงานเพื่อเก็บไว้เป็นหลักฐาน
ความรู้ด้าน Excel มีน้อยมาก แต่ก้จะพยามแกะเอา
****เรียนท่านอาจารย์ช่วยปรับปรุงแก้ไขทั้งหมดให้ด้วย***
ขอบพระคุณล่วงหน้า
ปล.เว็บอาจารย์เป็นประโยชน์มากๆๆๆๆๆๆๆๆๆๆๆๆๆ
Re: ขอเรียนปรึกษาและแก้ไข
Posted: Sat Apr 02, 2011 10:47 pm
by snasui

คงต้องค่อย ๆ เล่าและค่อย ๆ ปรับปรุงไป เนื่องจากผมไม่ทราบว่าขั้นตอนการทำงานเป็นอย่างไร และติดขัดที่ส่วนใดหรือต้องการปรับปรุงที่ส่วนใด และไม่ทราบว่ารายงานที่พิมพ์มีลักษณะเป็นอย่างไรครับ
สำหรับคำแนะนำเบื้องต้นคือให้จัดเก็บเป็นฐานข้อมูลหรือ Database ครับ ลองใช้กล่องค้นหาโดยใช้คำค้นว่า Database ในเวบนี้ก็จะเจอพอสมควร คิดว่าเป็นแนวทางในการเก็บข้อมูลได้ครับ และหากเราต้องนำข้อมูลที่เก็บไว้นั้นมาพิมพ์ลงแบบฟอร์มเราก็สามารถทำได้ ซึ่งอาจจะใช้ VBA เข้ามาช่วย
การเก็บข้อมูลเป็น Database หรือฐานข้อมูลนั้นเราสามารถสร้าง Form ขึ้นมาเพื่อส่งรายการใน Form ไปบันทึกลง Database ลองเล่ากระบวนการทำงานมาเพื่อทราบขั้นตอน และสิ่งที่ต้องการปรับปรุง เผื่อว่าจะพอช่วยได้ครับ
Re: ขอเรียนปรึกษาและแก้ไข
Posted: Sun Apr 03, 2011 11:12 am
by mkong2516
เรียนท่านอาจารย์
ขั้นตอนการของผมมีดังนี้
1.เมื่อได้ข้อมูลมาแล้วใน 1 วัน ผมจะพิมพ์เข้าไปที่ ชีทบันทึกกพ.54 ที่D5:J5 ส่วนที่ K5 ผมพิมพ์สูตร $k$2*j5
L5 พิมพ์ข้อมูล M5 เป็นสูตร N5 พิมพ์ข้อมูล O5 เป็นสูตร P5 พิมพ์ข้อมูล Q5 เป็นสูตร R5 พิมพ์ข้อมูล S5 เป็นสูตร
T5 คือผลรวของ K5,M5,O5,Q5,S5
2.ที่ชีท รายงานประจำวันที่เซลส์ D5 ผมพิมพ์สูตร =บันทึกกพ.54!D5 คัดลอกสูตรลงด้านล่าง
3.มี่ชีทด้านหน้า 768 ที่เซลส์ D7 ผมพิมพ์สูตร =บันทึกกพ.54!D5 คัดลอกสูตรลงด้านล่าง
4.ที่ชีทด้านหลัง768 ที่เซลส์ B6 ผมพิมพ์สูตร =บันทึกกพ.54!J5 คัดลอกสูตรลงด้านล่าง
5.ที่ชีทรายงานสั่งพิมพ์ ที่เซลส์ วันที่ ผมพิมพ์สูตร =บันทึกกพ.54!B6 ที่เซลส์ Y9 ผมพิมพ์สูตร =บันทึกกพ.54!D5
ชีทด้านหน้า768 ด้านหลัง768 เป็นแบบฟอร์มด้วยถ้าเป็นรถหมายเลขอื่นก็ต้องคัดลอกเพิ่มด้วย
ลักษณะที่ทำอยู่มีข้อผิดพลาดบ่อย ต้องมาแก้ไขเอง ลูกน้องไม่เข้าใจแก้ไม่ได้
ใ้ห้อาจารย์แก้ไขทำเป็นสูตรข้ามชีท ข้ามไฟล์อย่างไรก็ได้ที่เหมาะสม
แนะนำตัวอย่าง Database ให้ด้วย รบกวนท่านอาจารย์หน่อย
ขอบพระคุณครับ
Re: ขอเรียนปรึกษาและแก้ไข
Posted: Sun Apr 03, 2011 2:02 pm
by snasui
ผมทำให้ดูเป็นตัวอย่างสำหรับการเก็บข้อมูลเป็น Database ดูได้ที่ชีทสีเขียวครับ
1. ชีท Form ใช้สำหรับบันทึกรายการที่เกิดขึ้น เมื่อคลิกปุ่ม บันทึกข้อมูล รายการที่ A2:G2 จะถูกบันทึกไปที่ชีท Database ต่อจากรายการเดิมที่มีอยู่แล้ว
2. ชีท Database ทำไว้เพื่อเป็นฐานข้อมูล
3. ชีท Price เพื่อเก็บราคาของวัสดุต่าง ๆ
4. ชีท Truck เป็นทะเบียนของยานพาหนะ
ไฟล์นี้มีการเขียน VBA เพื่อใช้สำหรับส่งข้อมูลไปบันทึกเป็นฐานข้อมูล ซึ่งจะมีนามสกุลไฟล์เป็น .xlsm ครับ
Re: ขอเรียนปรึกษาและแก้ไข
Posted: Sun Apr 03, 2011 2:41 pm
by mkong2516
ขอบพระคุณมากนะครับ
ขอเวลาศึกษาข้อมูลสักระยะแล้ว
ถ้าเิกิดปัญญหาจะขอถามใหม่
Re: ขอเรียนปรึกษาและแก้ไข
Posted: Fri Apr 08, 2011 8:09 pm
by mkong2516
เรียนท่านอาจารย์
ทดลองทำข้อมูรายงาน
ดังตัวอย่างที่แนบ
ความต้องการ
1.ที่ชีทรายงาน วันที่ รับข้อมูลจากสูตร
อาจารย์ปรับปรุงและแก้ไขให้ด้วย
สมมมติวันที่ 8มค.54 ผมต้องพิมพ์ 4 ใบ วันที่ 9 ม.ค. 5 ใบ เป็นต้น
2.ชีทการหำรหัสไม่ซ้ำ ผมเอมาทำรายงานของ 768หน้า 768หลัง ยังไม่สมบูรณ์
ผมยังติดขัดอยู่คือ การหารหัสไม่ซ้ำแสดงออกมารายการเดียวในแต่ละวัน
ผมอยากให้แสงทั้งหมด หรือผมกำหนดสูตรผิด
รบกวนท่านอาจาร์ด้วย
ขอบพระคุณครับ
Re: ขอเรียนปรึกษาและแก้ไข
Posted: Fri Apr 08, 2011 10:19 pm
by snasui
ช่วยอธิบายเพิ่มเรื่องการพิมพ์ซ้ำครับ ว่าจำนวน 4 หรือ 5 ใบที่ยกตัวอย่างมานั้นมาจากไหน หรือพิมพ์ตามจำนวนที่พบในชีท Database
และสำหรับการหารหัสไม่ซ้ำให้แสดงออกมาในแต่ละวัน จะให้แสดงรหัสจากที่ไหน แสดงในเซลล์ไหน ช่วยแสดงตัวอย่างด้วยครับ
Re: ขอเรียนปรึกษาและแก้ไข
Posted: Sat Apr 09, 2011 9:53 am
by mkong2516
เรียนท่านอาจารย์
อธิบายเพิ่ม พิมพ์ตามที่พบในชีท Database ที่ชีทรายงานนี้ผมถามอาจารย์ว่าจะต้องปรับปรุงหรือแก้ไขอย่างไรอีกหรือไม่ พอใช้แล้ว OK
ข้อมูลเอามาจาก ชีท Database เช่นวันที่ 8 มค.54 มีรายการที่ไม่ซ้ำคือ จาระบี แสดงออกมา ถูกต้อง
วันที่ 9 มค.54 ที่ชีท Database มีรายการไม่ซ้ำคือ PTT-D3 plus#40 กับ จาระบี ที่ชีท นี้แสดงค่าเพียง จารบี ไม่แสดงค่า PTT-D3 plus#40 ซึ่งผมอยากให้แสดงด้วย ผมสงสัยครับว่าผมใส่สูตรผิดหรือเปล่าเท่านั้น
วันที่ 10 มค.54 ก็เหมือนกัน ที่ชีท Database มีรายการไม่ซ้ำคือ PTT-D3 plus#40 กับ จาระบี ที่ชีท นี้แสดงค่าเพียง จารบี ไม่แสดงค่า PTT-D3 plus#40 ซึ่งผมอยากให้แสดงด้วย
สำหรับการหารหัสไม่ซ้ำให้แสดงออกมาในแต่ละวัน จะให้แสดงรหัสจากที่ไหน แสดงในเซลล์ไหน ช่วยแสดงตัวอย่างด้วยครับ
ให้แสดงรหัสจากชีท Database มาที่ การหารหัสไม่ซ้ำ ที่ A2 : F100
ขอบพระคุณครับ
Re: ขอเรียนปรึกษาและแก้ไข
Posted: Sun Apr 10, 2011 6:56 pm
by snasui
การสั่งให้พิมพ์ตามจำนวนที่พบต้องใช้ VBA เข้ามาช่วยถึงจะทำเช่นนั้นได้ และใช้แค่ฟอร์มเดียวก็เพียงพอ ผมเขียน Code ให้แล้วตามด้านล่าง หากเป็นไปได้ฟอร์มที่ใช้ไม่ควร Merge Cell เพราะจะใช้งานลำบากกว่าปกติ มีหัวข้อเพียง 5 หัวข้อ ก็จะใช้เพียง 5 คอลัมน์ คือ A:F แต่ตอนนี้ใช้ไปถึง A:AR
สำหรับการทดลองการพิมพ์ ลองกดปุ่ม Print แล้วสังเกตดูผล
Code: Select all
Sub PrintForm()
Dim i As Integer
For i = 1 To Worksheets("ÃÒ§ҹ").Range("AT1")
With Worksheets("ÃÒ§ҹ").PageSetup
.PrintArea = "$A$1:$AR$17"
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
Worksheets("ÃÒ§ҹ").PrintOut
Next i
End Sub
สำหรับการกำหนดให้แสดงเฉพาะรายการที่มีเพียงรายการเดียวของแต่ละวัน ผมเขียนสูตรเพื่อหาข้อมูลออกมาก่อน จากนั้นค่อยเขียนสูตรเพื่อดึงข้อมูลมาแสดง โดยเขียนสูตรดังนี้
1. ที่ชีท Database เซลล์ I3 คีย์สูตรเพื่อเลือกค่าที่ไม่ซ้ำในแบบที่ทำสีมาให้
=SUMPRODUCT(--($B$3:$B$184=$B3),--($D$3:$D$184=D3))
Enter > Copy ลงด้านล่าง
2. ที่ชีทการหารหัสไม่ซ้ำ เพื่อนับค่าตามข้อ 1 ว่าพบจำนวนเท่าไร ที่เซลล์ F1 คีย์
=COUNTIF(Database!I3:I184,1)
Enter
3. ที่ชีทการหารหัสไม่ซ้ำ ที่ A2 คีย์สูตรเพื่อแสดงรายการทั้งหมด
=IF(ROWS(A$2:A2)>$F$1,"",INDEX(Database!B$3:B$184,SMALL(IF(Database!$I$3:$I$184=1,ROW(Database!$B$3:$B$184)-ROW(Database!$B$3)+1),ROWS(A$2:A2))))
Ctrl+Shift+Enter > Copy ลงด้านล่าง
การหาเฉพาะน้ำมันดีเซลล์ตามวันและตามรหัสรถที่ชีท 768 หน้าเซลล์ D7 คีย์
=IF(SUMPRODUCT(--(Database!$D$3:$D$184="น้ำมันดีเซล"),--($C$2=Database!$C$3:$C$184),--($A8=Database!$B$3:$B$184))>0,SUMPRODUCT(--(Database!$D$3:$D$184="น้ำมันดีเซล"),--($C$2=Database!$C$3:$C$184),--($A8=Database!$B$3:$B$184),Database!$E$3:$E$184),"")
Enter > Copy ลงด้านล่าง
ลองดูตามไฟล์แนบครับ
Re: ขอเรียนปรึกษาและแก้ไข
Posted: Sun Apr 10, 2011 9:54 pm
by mkong2516
ขอบพระคุณมากนะครับ
ขอเวลาศึกษาข้อมูลสักระยะแล้ว
ถ้าเิกิดปัญญหาจะขอถามใหมj
Re: ขอเรียนปรึกษาและแก้ไข
Posted: Mon Apr 11, 2011 12:21 pm
by snasui

ผมแนบไฟล์มาให้ใหม่เนื่องจากไฟล์เดิมยังไม่ Update ครับ
Re: ขอเรียนปรึกษาและแก้ไข
Posted: Sun Apr 17, 2011 12:07 pm
by mkong2516
เรียนท่านอาจารย์
ปรึกษานิดเดียวก่อน
ผมกำลังทำข้อมูลเกี่ยวกับการหาค่าแรงลูกจ้างชั่วคคราวอยู่
เริ่มต้นก็ติดดเสียแล้ว
ถามว่าสูตรหาวันหยุด เสาร์+อาทิตย์ ดังไฟล์ที่แนบ ที่ชีทHoliday คอลัมท์ A2
ผมพิมพ์แล้วมันฟ้องว่าอาร์กิวเมนต์มากเกินไป จะเป็็นที่เครื่องผมหรือสูตร หรืออาจารย์มีวิธีอื่น
ขอบพระคุณล่วงหน้าครับ
ปิดหลายวันเที่ยวสงกรานต์มีความสุขเต็มที่นะครับ
Re: ขอเรียนปรึกษาและแก้ไข
Posted: Sun Apr 17, 2011 12:15 pm
by snasui
สูตรเดิมพิมพ์วงเล็บไม่ครบครับ
ที่ B2 คีย์
จากสูตรเดิม
=if(weekday(a2)=1,a2,if(weekday(a2=7,a2,0))
เปลี่ยนเป็น
=IF(WEEKDAY(A2)=1,A2,IF(WEEKDAY(A2)=7,A2,0))
Re: ขอเรียนปรึกษาและแก้ไข
Posted: Sun Apr 17, 2011 12:22 pm
by mkong2516
เรียนท่านอาจารย์
ถูกต้องครับ
ขอบคุณครับ
Re: ขอเรียนปรึกษาและแก้ไข
Posted: Sat May 07, 2011 4:46 pm
by mkong2516
สวัสดีครับท่านอาจารย์
ขอเรียนปรึกษา และมีความต้องการให้ท่านอาจารย์ช่วย
ดังนี้
1. กรอกข้อมูลที่ชีท From ช่องคอลัมท์ที่ BN2 ,CQ2 ให้ไปโชว์ที่ชีท Data คอลัมท์ B4 ,C4,d4,e4,f4,g4……………………X4
มันคงต้องเขียน VBA ก็ได้ BN2 ตัวอักษร สีแดงทั้งหมด คือ หมายเลขคอลัมท์ ซึงผมต้องผสานเซล มันจึงทำให้ผมหาทางออกไม่ได้
ไม้รู้ว่าจะทำอย่างไร จึงขอความกรุณาให้อาจารย์ช่วยด้วย
กรอกข้อมูลจากชีท From ให้ไปโชว์ที่ชีท Data จากคอลัม B4:X4
ขอปรึกษาเพียงเท่านี้ก่อนขอบพระคุณล่วงหน้าครับ
Re: ขอเรียนปรึกษาและแก้ไข
Posted: Sat May 07, 2011 6:30 pm
by snasui
ลอง Link เซลล์จากชีท Form ไปยังชีท Template ตามที่ผมทำตัวอย่างไว้ให้แล้ว เพื่อทราบว่าต้องการ Link เซลล์ไหนไปไหน กรณีคอลัมน์ใดมีหลายบรรทัดก็ให้ Link มาให้ครบครับ จากนั้นแนบไฟล์มาอีกที ผมจะได้เขียน VBA ในการวางข้อมูลให้ครับ
Re: ขอเรียนปรึกษาและแก้ไข
Posted: Sun May 08, 2011 9:29 am
by mkong2516
เรียนปรึกษาท่านอาจารย์
ผมแก้ไขและเพิ่มเติม Template มาให้อาจารย์แล้ว พร้อมแนบไฟล์มาแล้ว
ตรงวัตถุประสงค์ไหมครับ
เรียนถามอาจารย์เพิ่มอีกนิด พอผมรัน VBA แล้วสักพักหนึ่งเครื่องคอมผมมันปิดโปรแกรม
Excel2007แล้วกู้กลับมาใหม่แล้วมีหน้าต่างให้เราส่งข้อผิดพลาดไปใ้หกับMicrosofe
เป็นเพราะโปรแกรมใช่ไหมผมยังไม่ได้ส่งร้านแก้ไขเลย
Re: ขอเรียนปรึกษาและแก้ไข
Posted: Sun May 08, 2011 10:23 am
by snasui

การที่โปรแกรมแฮ้งก์อาจจะเกิดจากไฟล์นั้นมีปัญหาก็ได้ครับ ลองนำไฟล์นั้นไปเปิดกับเครื่องอื่น ถ้ามีปัญหาเช่นเดียวกันก็เป็นที่ไฟล์ ถ้าไม่มีปัญหาก็เป็นที่โปรแกรมครับ
สำหรับ Template และ Data ผมปรับมาให้ใหม่เพื่อให้เป็นฐานข้อมูล เพิ่มรายละเอียดหลัก รายละเอียดย่อย โดยใช้ Code ในการวางข้อมูลตามด้านล่างครับ
Code: Select all
Sub PateData()
Dim rs As Range, rt As Range
With Worksheets("Template")
Set rs = .Range("A2:AE" & .Range("AF1"))
End With
Set rt = Worksheets("Data").Range("A65536") _
.End(xlUp).Offset(1, 0)
rs.Copy
rt.PasteSpecial xlPasteValues
MsgBox "Finish"
Application.CutCopyMode = False
End Sub
ดูไฟล์แนบประกอบครับ
Re: ขอเรียนปรึกษาและแก้ไข
Posted: Mon May 09, 2011 10:11 pm
by mkong2516
เรียน ท่านอาจารย์
อาจารย์ดูข้อมูลที่ผมกรอกแล้วผลมันออกมากับData
อาจารย์ต้องดูที่จำนวนรายการของคอลัมท์ รายการที่ มันแสดงออกมาไม่ครบจำนวนที่ต้องการ
ลักษณะการกรอกข้อมูลจะเป็นลักษณะนี้ละครับ อีกอย่างบางครั้งรายการมันจะมากกว่า 13 รายการ ท่านอาจารย์ช่วยแก้ไขด้วย ถ้ารายการมีมากกว่า จำนวแถวที่เรากำหนดไว้
ขอบคุณท่านอาจารย์ล่วงหน้าด้วยครับ
Re: ขอเรียนปรึกษาและแก้ไข
Posted: Mon May 09, 2011 10:25 pm
by snasui

คุณ mkong2516 ไม่ควรกรอกข้อมูลลักษณะนั้นครับ สำหรับ 1 รายการควรมีบรรทัดเดียว ไม่ใช่มีมากกว่า 1 บรรทัด โปรแกรม Excel สามารถขึ้นบรรทัดใหม่ในเซลล์เดียวกันโดยกดแป้น Alt+Enter ครับ หากจะให้บันทึกข้อมูลตามลักษณะที่กรอกเป็นตัวอย่างมานี้ จะเป็นการเก็บ Data ที่ไม่เหมาะจะเป็น Database นำไปใช้ประโยชน์ไม่ได้ตามที่ควรจะเป็น การดึงข้อมูลมาใช้งานทีหลังจะเกิดความยุ่งยากลำบากครับ
