Page 5 of 8

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

Posted: Wed Oct 26, 2011 3:22 pm
by snasui
:D สูตรพวกนี้เข้าใจค่อนข้างยาก เป็นการใช้แบบประยุกต์ไม่ได้ใช้ด้วยความหมายปกติของมันครับ

สำหรับที่าถามมานั้น ลองแล้วยังครับ :?: หากลองแล้วได้ผลไม่เป็นที่ต้องการช่วยแจ้งมาพร้อมกับระบุผลลัพธ์ที่ต้องการมาด้วย จะได้ช่วยกันหาคำตอบครับ

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

Posted: Wed Oct 26, 2011 6:30 pm
by suka
ผลจากการทดลองดู ได้คำตอบที่ถูกต้องค่ะ

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

ขอบคุณค่ะ

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

Posted: Wed Oct 26, 2011 6:32 pm
by snasui
:D การทำเช่นนั้นก็เป็นทางเลือกที่ดีครับ ไม่เช่นนั้นก็ต้องเขียน Code ที่ซับซ้อนขึ้น เพราะต้อง Loop เอาเฉพาะค่าที่ไม่ว่างไปวางครับ

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

Posted: Wed Oct 26, 2011 6:36 pm
by suka
ขอบพระคุณมากๆๆค่ะ

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

Posted: Thu Oct 27, 2011 2:57 pm
by suka
อาจารย์คะ ขอคำแนะนำเรื่องคีย์อักษรตัวแรกที่ชีท Form เซลล์ D5 เช่นคีย์ จ แล้วให้แสดงชื่อ จิตร , จันทร์ , จอห์น มาให้เลือกค่ะ
ได้นำ Code นี้

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
On Error Resume Next
If Not Intersect(Target, Range("D5:D100")) Is Nothing Then
    Worksheets("Employee Data").Range("AF1") = Target
    Target.Select
    If Len(Target) < 3 Then
    Application.SendKeys "%{DOWN}"
    End If
End If
Application.EnableEvents = True
End Sub
ไว้ที่ชีท Form และที่ชีท Employee Dataได้ใส่สูตรไว้ที่เซลล์ AE1:AG15
สงสัยว่าจะเรียนแบบสูตรของอาจารย์ผิดค่ะ ไม่ได้ผลค่ะไม่แสดงดังที่ต้องการค่ะ

ขอบคุณค่ะ

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

Posted: Thu Oct 27, 2011 3:38 pm
by snasui
:D ไม่ทราบว่าเลียนแบบมาจากไฟล์ไหนครับ การทำเช่นที่ต้องการนั้นต้องมี Code สำหรับการสร้าง Validation ด้วย แต่ไฟล์ที่แนบมายังไม่มี Code นั้นครับ

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

Posted: Thu Oct 27, 2011 4:12 pm
by suka
suka wrote:อาจารย์คะ ขอคำแนะนำเรื่องคีย์อักษรตัวแรกที่ชีท Form เซลล์ D5 เช่นคีย์ จ แล้วให้แสดงชื่อ จิตร , จันทร์ , จอห์น มาให้เลือกค่ะ
ได้นำ Code นี้

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
On Error Resume Next
If Not Intersect(Target, Range("D5:D100")) Is Nothing Then
Worksheets("Employee Data").Range("AF1") = Target
Target.Select
If Len(Target) < 3 Then
Application.SendKeys "%{DOWN}"
End If
End If
Application.EnableEvents = True
End Sub
ไว้ที่ชีท Form และที่ชีท Employee Dataได้ใส่สูตรไว้ที่เซลล์ AE1:AG15
สงสัยว่าจะเรียนแบบสูตรของอาจารย์ผิดค่ะ ไม่ได้ผลค่ะไม่แสดงดังที่ต้องการค่ะ

ขอบคุณค่ะ
อาจารย์คะ ที่ทำมานี้ก็เป็นการเข้าใจผิด แล้ว Code ด้านบนนี้ใช่ใช้กับสูตรที่ชีท Employee Data ซลล์ AE1:AG15 ที่ทำไว้หรือไม่คะ หากใช่จะเป็นคำสั่งให้ทำงานเกียวกับอะไรคะ
ขอบคุณค่ะ

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

Posted: Thu Oct 27, 2011 5:26 pm
by snasui
suka wrote:อาจารย์คะ ที่ทำมานี้ก็เป็นการเข้าใจผิด แล้ว Code ด้านบนนี้ใช่ใช้กับสูตรที่ชีท Employee Data ซลล์ AE1:AG15 ที่ทำไว้หรือไม่คะ
คำสั่งนี้เป็นการสั่งให้ทำการแสดงค่าใน Validation โดยอัตโนมัติหากว่าคีย์ตัวอักษรน้อยกว่า 3 ตัวลงในช่วงเซลล์ที่กำหนด แต่เนื่องจากทำมาไม่ถูกต้องจึงยังไม่เกี่ยวกันครับ ผมได้ปรับ Validation ให้โดยให้ชื่อกับช่วงเซลล์ใหม่เป็น ValData และปรับสูตรที่ ชีท Employee Data ซลล์ AE2:AE11 เสียใหม่ ลองดูไฟล์แนบประกอบครับ

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

Posted: Thu Oct 27, 2011 7:12 pm
by suka
อาจารย์คะ ขอรบกวนอีกรอบนะคะ ลองทำตามตัวอย่างไฟล์ต้นแบบของอาจารย์ก็ยังทำไม่ได้ไม่ทราบทำเกินหรือขาดที่ใดจุดใดค่ะ
ขอบคุณค่ะ

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

Posted: Thu Oct 27, 2011 7:31 pm
by snasui
:D ได้อ่านและเข้าใจตามนี้หรือยังครับ
snasui wrote:...ผมได้ปรับ Validation ให้โดยให้ชื่อกับช่วงเซลล์ใหม่เป็น ValData...
ในข้อความที่ยกมามี 2 เรื่อง
  • ปรับ Validation ใหม่โดยนำข้อ 2 มาใช้
  • ให้ชื่อกับช่วงข้อมูลที่จะทำมาใช้ใน Validation ใหม่ชื่อว่า ValData
สิ่งที่ต้องตรวจสอบ
  • ตรวจสอบชื่อที่ให้ไว้ว่ากำหนดค่าอย่างไรโดยเข้าไปที่เมนู Insert > Name > Define แล้วหาชื่อ ValData
  • นำชื่อนั้นมาใช้ใน Validation
  • สังเกตการกำหนดค่าในแถบอื่น ๆ ของ Validation จากไฟล์ที่ผมแนบกลับไปให้ว่ากำหนดไว้เป็นเช่นใด

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

Posted: Thu Oct 27, 2011 9:00 pm
by suka
2.ให้ชื่อกับช่วงข้อมูลที่จะทำมาใช้ใน Validation ใหม่ชื่อว่า ValData
อาจารย์คะ
การตั้งชื่อคือไปที่เมนู Insert > Name > Define ใส่ชื่อ ValData และใส่สูตรในช่องอ้างอิง =OFFSET('Employee Data'!$AG$2,0,0,'Employee Data'!$AG$1)
แล้วนำมาใช้
1.ปรับ Validation ใหม่โดยนำข้อ 2 มาใช้
ใช่แบบนี้ไหมคะ ได้ทำแบบนี้แล้วลองคีย์ที่ชีท Form เซลล์ D5 อักษร 2 ตัวที่ต้องการแล้ว Enter จะมีคำเตือนขึ้นมาค่ะ
น่าจะยังทำไม่ถูกวิธีมาขอคำแนะนำจากอาจารย์เพิ่มค่ะ
ขอบคุณค่ะ

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

Posted: Thu Oct 27, 2011 9:08 pm
by snasui
snasui wrote: สิ่งที่ต้องตรวจสอบ
  • ...
  • ...
  • สังเกตการกำหนดค่าในแถบอื่น ๆ ของ Validation จากไฟล์ที่ผมแนบกลับไปให้ว่ากำหนดไว้เป็นเช่นใด
แสดงว่ายังไม่ได้ทำตามข้อ 3 ตามที่แจ้งไปครับ :roll: ให้ปลดเครื่องหมายที่ลูกศรชี้ตามภาพด้านล่างออกไปครับ

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

Posted: Fri Oct 28, 2011 10:54 am
by suka
ค่ะอาจารย์ ใช่ค่ะยังไม่ได้ทำตามข้อ 3 ด้วยความมุ่งมั่นตั้งใจทำข้อ 2

ตอนนี้ทำตามข้อ 3 ใช้งานได้แล้วค่ะ ขอบพระคุณมากค่ะ

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

Posted: Fri Oct 28, 2011 10:00 pm
by suka
อาจารย์คะ ขอความช่วยเหลือเรื่องสูตรที่ชีท PrintRepor ช่วงคอลัมน์ BT:BY สูตรที่ใช้นี้หากเรียกดูรายงานตามวันที่ ที่ชีท Form บันทึกแต่ละครั้งจะแสดงผลได้ถูกต้อง เช่น

ที่ชีท Form ได้บันทึกการทำงาน ครั้งที่ 1 วันที่ 3/10/2011 -8/10/2011 แล้วเรียกดูรายงานที่ชีท PrintReport และที่เซลล์ BY7 แสดงตัวเลข 120 ถูกต้อง
ที่ชีท Form ได้บันทึกการทำงาน ครั้งที่ 2 วันที่ 10/10/2011 -15/10/2011แล้วเรียกดูรายงานที่ชีท PrintReport ที่เซลล์ BX7 แสดงตัวเลข 5 และที่เซลล์ BY7 แสดงตัวเลข 115 ถูกต้อง
ปัญหาคือเรียกดูรายงาน วันที่ 3/10/2011 -15/10/2011 รวม 2 ครั้งของการบันทึกที่ชีท PrintReport ที่ถูกต้องที่เซลล์ BX7 แสดงตัวเลข 5 และที่เซลล์ BY7 แสดงตัวเลข 235
แต่เป็นที่เซลล์ BX7 แสดงไม่มีเลขใด เซลล์ BY7 แสดงตัวเลข 120 ออกมาผิดค่ะ
ขอบคุณค่ะ

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

Posted: Sat Oct 29, 2011 12:59 am
by snasui
:D ไม่ทราบว่าคำตอบที่ต้องการนั้นให้นำเซลล์ไหนของชีท Database มาแสดง และเข้าใจสูตร Sumproduct ที่เขียนมาหรือไม่ครับ :?:

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

Posted: Sat Oct 29, 2011 10:45 am
by suka
เมื่อแรกที่นำสูตรมาใช้ขาดความรอบครอบ ทดสอบแค่ช่วงที่ชีท Form บันทึกเป็นรายสัปดาห์ แต่ชีท PrintReport ออกแบบเพื่อดูรายงานได้หนึ่งเดือน ผลที่ได้จึงไม่ใช่ที่ต้องการค่ะ
snasui wrote:เข้าใจสูตร Sumproduct ที่เขียนมาหรือไม่ครับ
สูตร Sumproduct ที่เข้าใจ (แบบงงๆ)ค่ะ ยกตัวอย่างให้แสดงที่คอลัมน์ BX ของชีท PrintReport
"ให้หาผลของแต่ละรายการว่ามีค่าตรงกับค่าในคอลัมน์ D หากตรงตามคอลัมน์ D ของชีท PrintReport ให้นำค่าในคอลัมน์ S ของชีท Database ที่ตรงกันมาแสดง "
snasui wrote:ไม่ทราบว่าคำตอบที่ต้องการนั้นให้นำเซลล์ไหนของชีท Database มาแสดง
ให้นำคอลัมน์ R ของชีท Database มาแสดงที่ คอลัมน์ BW ของชีท PrintReport
ให้นำคอลัมน์ S ของชีท Database มาแสดงที่ คอลัมน์ BX ของชีท PrintReport
ให้นำคอลัมน์ Q ของชีท Database มาแสดงที่ คอลัมน์ BY ของชีท PrintReport
ให้นำคอลัมน์ T ของชีท Database มาแสดงที่ คอลัมน์ BZ ของชีท PrintReport

ขอบพระคุณค่ะ

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

Posted: Sat Oct 29, 2011 10:59 am
by snasui
suka wrote:"ให้หาผลของแต่ละรายการว่ามีค่าตรงกับค่าในคอลัมน์ D หากตรงตามคอลัมน์ D ของชีท PrintReport ให้นำค่าในคอลัมน์ S ของชีท Database ที่ตรงกันมาแสดง "
ที่อธิบายเกียวกับสูตร Sumproduct มานั้น ไม่ถูกต้องครับ จากสูตรในชีท PrintReport เซลล์ BX7

=IF(L$6>$D$3,"",SUMPRODUCT(--(L$6=Database!$A$2:$A$65536),--(L$3=Database!$K$2:$K$65536),--($D7=Database!$E$2:$E$65536),Database!$S$2:$S$65536))

มี 3 เงื่อนไข คือ
  • --(L$6=Database!$A$2:$A$65536)
  • --(L$3=Database!$K$2:$K$65536)
  • --($D7=Database!$E$2:$E$65536)
ส่วน Database!$S$2:$S$65536 คือช่วงเซลล์ที่ต้องการนำมาแสดงผล

ทราบหรือไม่ครับว่าแต่ละเงื่อนไขหมายความว่าอย่างไร :?:

และตามด้านล่าง
suka wrote:ที่ถูกต้องที่เซลล์ BX7 แสดงตัวเลข 5 และที่เซลล์ BY7 แสดงตัวเลข 235
เซลล์ไหนบ้างใช้ชีท Database ที่จะนำมาวางใน BX7 แล้วให้แสดงเป็น 5 และเซลล์ไหนบ้างในชีท Database ที่จะให้แสดงใน BY7 แล้วให้แสดงเป็น 235 :?:

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

Posted: Sat Oct 29, 2011 11:24 am
by suka
อาจารย์คะ ตามไฟล์ตัวอย่าง

ใช้เซลล์ S2:S13,S62:S73 ชีท Database มาแสดงที่เซลล์ BX7 แสดง 5 ค่ะ
ใช้เซลล์ Q2:Q13,Q62:Q73 ชีท Database มาแสดงที่เซลล์ BY7 แสดง 235 ค่ะ

ขอบคุณค่ะ

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

Posted: Sat Oct 29, 2011 12:02 pm
by snasui
:D ดูแล้วคงจะต้องถามตอบกันอีกยาวไกล ควรทำความเข้าใจสูตร Sumproduct ใหม่ครับ

เนื่องจากสูตรที่อ้างอิงมานั้นผิดเงื่อนไข จากไฟล์ที่แนบมา เงื่อนไขน่าจะเป็นวันแรกกับวันสิ้นสุด ไม่ได้เกี่ยวอะไรกับ J3, J6

ลองเขียนสูตรนี้ที่ BY7

=IF(D$2>$D$3,"",SUMPRODUCT(((D$2=Database!$A$2:$A$65536)+(D$3=Database!$A$2:$A$65536)),--(J$3=Database!$K$2:$K$65536),--($D7=Database!$E$2:$E$65536),Database!$Q$2:$Q$65536))

Enter > Copy ลงด้านล่าง ปรับใช้กับเซลล์อื่นที่มีการคำนวณลักษณะเดียวกัน

กรณีผมถามว่าเซลล์ไหน ให้ตอบโดยระบุเซลล์เช่น A1, A10, A100 เป็นต้น ไม่ใช่ตอบมาเป็นช่วงเซลล์เหมือนที่ตอบมาครับ

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

Posted: Mon Oct 31, 2011 9:41 am
by suka
ขออภัยค่ะอาจารย์ จะทำความเข้าใจและศึกษาให้มากกว่านี้ค่ะ :oops:
สูตรที่ได้ตรงตามต้องการค่ะ ขอบพระคุณมากค่ะ