Page 3 of 7

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

Posted: Wed Dec 22, 2010 3:30 pm
by suka
อาจารย์เข้าใจถูกต้องแล้วค่ะ ขออภัยตัวอย่างทำไม่ถูกต้องขอส่งตัวอย่างใหม่ค่ะ
ที่ชีทตัวอย่างค่ะ คอลัมน์ E ถึง R ได้ทำตัวอย่างใหม่แยกจาก คอลัมน์ C Unit Price คอลัมน์ D Discount เป็นราคาทั่วไป
UnitPriceได้แยกราย Suplier ด้วยค่ะ

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

Posted: Wed Dec 22, 2010 3:42 pm
by snasui
สูตรในการหา Discount ราย Supplier จากข้อมูลที่ปรับมาใหม่ ที่เซลล์ K4 คีย์

=IF(ISBLANK($D4)," ",INDEX(ตัวอย่างค่ะ!$E$2:$R$9,MATCH($D4,ตัวอย่างค่ะ!$B$2:$B$9,0),MATCH($D$2,ตัวอย่างค่ะ!$E$1:$R$1,0)+1))

Enter > Copy ลงด้านล่าง

สูตรในการหา Unit Price ราย Supplier ที่เซลล์ใด ๆ คีย์

=IF(ISBLANK($D4)," ",INDEX(ตัวอย่างค่ะ!$E$2:$R$9,MATCH($D4,ตัวอย่างค่ะ!$B$2:$B$9,0),MATCH($D$2,ตัวอย่างค่ะ!$E$1:$R$1,0)))

Enter > Copy ลงด้านล่าง สังเกตว่าไม่มี +1 เหมือนสูตรแรก

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

Posted: Wed Dec 22, 2010 4:05 pm
by suka
ราคาทั่วไปใช้ในกรณีการสั่งซื้อไม่สม่ำเสมอค่ะ

ผลการใช้งานใช้ได้แล้วค่ะ เราต้องเพิ่มชีทตามตัวอย่างใช่ไหมคะ

อาจารย์คะสูตรที่มี +1 และไม่มีบวก การทำงานต่างกันตรงไหนตะ

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

Posted: Wed Dec 22, 2010 4:13 pm
by suka
อาจารย์ขอถามเพิ่มค่ะ

ถ้าต้องเพิ่มชีทตามตัวอย่าง พอจะมีวิธีทำให้กระชับกว่านี้มั้ยคะ

ขอบพระคุณมากค่ะ

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

Posted: Wed Dec 22, 2010 4:39 pm
by snasui
:D ต้องเพิ่มชีทตามตัวอย่างครับและที่ทำอยู่นี้ก็กระชับดีอยู่แล้วครับ

สำหรับ +1 และไม่บวก 1 เพราะว่า Supplier รายเดียวกันมี 2 คอลัมน์ สังเกตได้ว่าคอลัมน์ที่ต้อง +1 เป็น Discount

ฟังกชั่น Match จะให้ผลลัพธ์เป็นลำดับที่ ดังนั้น หากไม่บวก 1 จะเจอลำดับที่ที่เป็น Unit Price เสมอ ไม่ว่าจะเป็น Supplier รายใด :mrgreen:

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

Posted: Wed Dec 22, 2010 5:13 pm
by suka
ขอบคุณค่ะ

เหมือนสวรรค์โปรดให้ได้พบ และ มีฟอรัมถาม-ตอบ ดีๆๆ แบบนี้คอยช่วยคนอ่อนๆๆ "excel"
ขอบคุณอาจารย์ที่ใจดีคอยแนะนำ ศิษย์ทำผิดพลาดไม่มีบ่น ขอบคุณนะคะ

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

Posted: Fri Dec 24, 2010 9:54 am
by suka
อาจารย์คะ มาขอรบกวนอีกแล้วค่ะ

ได้เห็นเพื่อนสมาชิกในฟอรัมนี้ ทำปฏิทินเพื่อเลือกวันที่แทนการกรอกวันที่เห็นว่าจะสะดวกกว่าการกรอกใส่เพราะผู้กรอกจะติดใส่ พ.ศ.มากกว่า ค.ศ.
อาจารย์คะ ขอ Add Calendar เข้ามาใช้ในชีท Enterthedata ด้วยนะค่ะ

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

Posted: Fri Dec 24, 2010 9:56 am
by snasui
:D ลอง Add เข้ามาเองดูก่อนครับ ติดตรงไหนค่อยถามมาเรื่อย ๆ ครับ จะได้สร้างความคุ้นเคยครับ :mrgreen:

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

Posted: Fri Dec 24, 2010 10:38 am
by suka
อาจารย์คะ Add Calendar เข้ามาใช้ในชีท Enterthedata ก่อนหน้านี้แล้วค่ะ
Add Calendar เข้ามาได้เฉยๆ แต่ยังไม่รู้วิธีทำให้มีการเชื่อมโยงการทำงานค่ะ
ขออาจารย์ช่วยแนะวิธีค่ะ :roll:

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

Posted: Fri Dec 24, 2010 10:49 am
by snasui
:D ลองดู Code จากที่นี่ครับ http://www.snasui.com/viewtopic.php?p=3480#p3480

ลองนำ Code มาวางใน VBE ดูเองก่อน จากนั้นแนบไฟล์มาอีกรอบ ผมจะปรับ Code ให้ใหม่ จะได้สังเกต Code หลังการปรับครับ :mrgreen:

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

Posted: Fri Dec 24, 2010 11:06 am
by suka
อาจารย์คะ ลองนำ Code มาวางใน VBE ไม่ทราบจะวางตรงไหนเลยต่อท้ายมาค่ะ

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

Posted: Fri Dec 24, 2010 11:13 am
by snasui
:D ไม่เป็นไรครับ

ให้วางใหม่ที่ชีท Enterthedata โดยใช้ Code ด้านล่างนี้ครับ

Code: Select all

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address = "$L$1" Then
    With ActiveSheet.Calendar1
            .Visible = True
            .Top = ActiveCell.Offset(0, 0).Top
            .Left = ActiveCell.Offset(0, 1).Left
    End With
Else
    ActiveSheet.Calendar1.Visible = False
End If
Application.EnableEvents = True
End Sub
Private Sub Calendar1_Click()
ActiveCell.Value = Calendar1.Value
End Sub
จากนั้นทดสอบใช้งานดูครับ

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

Posted: Fri Dec 24, 2010 11:49 am
by suka
อาจารย์คะ

แจ้งผลค่ะ ใช้งานได้แล้วค่ะ :lol: :lol:

ขอบพระคุณมากค่ะ

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

Posted: Sat Dec 25, 2010 10:06 am
by suka
อาจารย์คะ มาขอรบกวนอีกแล้วค่ะ

ที่ชีท Enterthedata เวลาเลือก Group ถ้ามี SubGroup จำนวนมาก Drop Down List ที่เลือก Group ก็มากด้วย
ไม่ทราบพอมีวิธีทำให้เหลือแค่เป็นตัวแทน การเลือก Group แค่ Group ละ 1 ตัวแทนได้มั้ยคะ

อาจารย์คงไม่งงนะคะ แต่คนขอมีงงนิดหน่อยค่ะ

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

Posted: Sat Dec 25, 2010 11:01 am
by snasui
:D ข้อมูล Group และ Subgroup ที่ทำอยู่ตอนนี้ใช้แบบไม่กระชับ โดยไปนำมาจากชีท Products มาใช้ เป็นการนำข้อมูลเดียวกันไปใช้หลายวัตถุประสงค์ ข้อมูล Group ใน Validation จึงซ้ำกัน ซึ่งจะเห็นว่าไม่เหมาะจะทำ Validation ครับ ควรสร้าง Group แบบไม่ซ้ำขึ้นมาต่างหากสำหรับไว้ทำ Validation ครับ :mrgreen:

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

Posted: Sat Dec 25, 2010 1:27 pm
by suka
อาจารย์คะ

ได้เพิ่ม ชีท Cate_Group เข้ามาและทำการเปลี่ยน Group ใน Validation

ของเดิมGroup =OFFSET(Products!$A$2,0,0,COUNTA(Products!$A$2:$A$49998))

เปลี่ยนเป็น =OFFSET(Cate_Group!$A$2,0,0,COUNTA(Cate_Group!$A$2:$A$6))

Description ยังคงเดิมไม่ได้ปรับ ไม่ทราบว่าต้องปรับด้วยมั้ยคะ

=OFFSET(Products!$C$2,MATCH(Enterthedata!$B4,Products!$A$2:$A$49998,0)-1,0,COUNTIF(Products!$A$2:$A$49998,Enterthedata!$B4))

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

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

Posted: Sat Dec 25, 2010 2:24 pm
by snasui
:D จากสูตร

=OFFSET(Cate_Group!$A$2,0,0,COUNTA(Cate_Group!$A$2:$A$6))

เป็นการนับแค่ $A$2:$A$6 หากมีการเพิ่มข้อมูลเข้ามาเรื่อย ๆ จะต้องปรับสูตรใหม่ ดังนั้น ให้ปรับเป็นตามด้านล่างเพื่อให้เกิดความยืดหยุ่นและสามารถเพิ่มข้อมูลได้ทั้งคอลัมน์

=OFFSET(Cate_Group!$A$2,0,0,COUNTA(Cate_Group!$A$2:$A$65536))

และจาก

=OFFSET(Products!$C$2,MATCH(Enterthedata!$B4,Products!$A$2:$A$49998,0)-1,0,COUNTIF(Products!$A$2:$A$49998,Enterthedata!$B4))

ใช้ได้อยู่แล้วครับ มีการเผื่อไว้เกือบ 5 หมื่นบรรทัด หากจะปรับให้นับถึงบรรทัดสุดท้ายก็เปลี่ยนเป็นตามด้านล่างครับ

=OFFSET(Products!$C$2,MATCH(Enterthedata!$B4,Products!$A$2:$A$65536,0)-1,0,COUNTIF(Products!$A$2:$A$65536,Enterthedata!$B4))

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

Posted: Sat Dec 25, 2010 3:48 pm
by suka
ขอบพระคุณมากๆค่ะ

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

Posted: Tue Jan 04, 2011 9:37 pm
by suka
สวัสดีปีใหม่ค่ะ

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

ดิฉันได้ลองปรับ Code VBE ของอาจารย์ดู และลองใช้งานก็ใช้ได้ดีนะคะ ถ้าสามารถสือความต้องการให้อาจารย์ทราบน่าจะได้ดีกว่านี้

ที่ชีท Enterthedata อยากขออาจารย์ช่วยเพิ่ม Code
เมื่อกดปุ่ม Record Complete บันทึก แล้วที่เซลล์ L2 ให้เลขที่เอกสารบวกเพิ่มจากเดิม 1 โดยอัตโนมัติ อีกอย่างเอกสารมีหลายหมวดจะทำได้มั้ยคะ

ขอบคุณนะคะ

Re: ได้แรงบันดาลใจจาก "เทคนิคการทำ Validation แบบสัมพันธ์กัน

Posted: Tue Jan 04, 2011 9:48 pm
by snasui
:D L2 สามารถมีรูปแบบอะไรได้บ้างครับ ต้องแจกแจงมาทั้งหมดเท่าที่สามารถจะมีได้ครับ เพราะการเพิ่มทีละ 1 จาก Text นั้นไม่ได้ทำง่ายเหมือนเพิ่มจากตัวเลขครับ :mrgreen: