Page 1 of 2
Code การกรอกข้อมูนที่มีเงื่อนไข
Posted: Sun Sep 23, 2012 1:37 pm
by วังวู ช่ง
สวัสดี ท่าน อาจารย์ และสะมาชิกที่รู้ทุกท่านครับ ผมติดปัญหาเลื่อง Code การ Copy ข้อมูนที่กำนดครับ ช่วยดู และแนะนำให้ด้วยครับ
Code: Select all
Sub Macro1()
Application.ScreenUpdating = False
Range("AJ11").Select
Range("AJ11:BO800").Select
Selection.Clear
Range("A11:AF800").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
Range("AH2:AI2"), CopyToRange:=Range("AJ11:BO11"), Unique:=False
Application.ScreenUpdating = True
Range("AJ1:BO1").Select
End Sub
ปัญหาคือต้องการกรอกข้อมูนที่กำนดใน AH2 และ AI2 คือค่าที่อยู่ใน Column AH และ Column AG ครับให้กรอกข้อมูนใน A11:AH34 ที่มีค่ากำนดใน AH2 และ AI2 ลงไปที่ AJ11:BO11 ลงไปครับ
ขอบคุณท่านล่วงหน้าครับ
Re: Code การกรอกข้อมูนที่มีเงื่อนไข
Posted: Sun Sep 23, 2012 3:09 pm
by snasui

การใช้ Filter และ Advanced Filter ปกติแล้วจะเป็นการ Filter
จากฐานข้อมูล ไม่ใช่ Filter จากรายงานอย่างเช่นที่กำลังจะทำอยู่นี้ครับ
รูปแบบข้อมูลที่เป็นรายงาน
ไม่เหมาะที่จะทำ Filter หลัก ๆ เนื่องจาก
- มีหัวคอลัมน์หลายบรรทัด เช่นตัวอย่างที่แนบมา
- บางคอลัมน์อาจจะมีข้อมูลไม่ครบเนื่องจากข้อความเหมือนด้านบน จึงไม่แสดงข้อความซ้ำอีก
ดังนั้น หากต้องการจะทำ Advanced Filter จากรายงาน สิ่งที่จะต้องทำในการเขียน Code คือ
- เขียน Code แทรกบรรทัดเข้ามาใหม่แล้วเขียนหัวคอลัมน์ที่บรรทัดนี้เพื่อให้หัวคอลัมน์มีแค่ 1 บรรทัดเท่านั้น
- ดึงข้อมูล
- ลบบรรทัดที่แทรกทิ้งไปเพื่อให้กลับมาเป็นรายงานเหมือนเดิม
อีกทางเลือกคือ ใช้การ Loop ด้วย Code แทนการใช้ Advanced Filter จะได้ไม่ต้องแทรกต้องลบบรรทัด
ลองปรับมาก่อนตามแนวทางที่พอจะทำได้ ติดขัดตรงไหนค่อยมาถามกันต่อครับ
Re: Code การกรอกข้อมูนที่มีเงื่อนไข
Posted: Sun Sep 23, 2012 3:29 pm
by วังวู ช่ง
snasui wrote:
อีกทางเลือกคือ ใช้การ Loop ด้วย Code แทนการใช้ Advanced Filter จะได้ไม่ต้องแทรกต้องลบบรรทัด
ลองปรับมาก่อนตามแนวทางที่พอจะทำได้ ติดขัดตรงไหนค่อยมาถามกันต่อครับ
เรียน ท่าน อาจารย์ ครับ เอาแบบข้างเทิงนี้ครับ แต่ต้องขอโทดครับ ที่ผมทำไม่เป็นครับ ผมต้องขอโทดที่อยากจะละเมีด กฎการใช้บอร์ด 5. สำหรับคำถามเกี่ยวกับ VBA ให้ลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน
อยากจะขอให้ท่าน อาจารย์ ช่วยเขียนเลียได้ไม่ครับ?
ขอบคุณล่วงหน้าครับ
Re: Code การกรอกข้อมูนที่มีเงื่อนไข
Posted: Sun Sep 23, 2012 3:37 pm
by snasui

ต้องขออภัยที่บอกว่า สมาชิกทุกคนมีความเท่าเทียมกันครับ เมื่อผมมีกฎที่จะไม่เขียนให้ก่อนก็ต้องเป็นไปตามนั้นครับ
Re: Code การกรอกข้อมูนที่มีเงื่อนไข
Posted: Mon Sep 24, 2012 6:29 am
by วังวู ช่ง
snasui wrote:
ต้องขออภัยที่บอกว่า สมาชิกทุกคนมีความเท่าเทียมกันครับ เมื่อผมมีกฎที่จะไม่เขียนให้ก่อนก็ต้องเป็นไปตามนั้นครับ
เรืยน ท่าน อาจารย์ และสมาชิกทุกท่านครับ ช่วยดู และแนะนำตามนี้ว่าติดปัญหาตรงไหน ช่วยแกะให้ด้วยครับ
ขอบคุณล่วงหน้าครับ
Re: Code การกรอกข้อมูนที่มีเงื่อนไข
Posted: Mon Sep 24, 2012 7:36 am
by snasui

ติดปัญหาตรงที่ผมไม่แน่ใจว่าที่ถามมาในคราวก่อนคือ
วังวู ช่ง wrote:สวัสดี ท่าน อาจารย์ และสะมาชิกที่รู้ทุกท่านครับ ผมติดปัญหาเลื่อง Code การ Copy ข้อมูนที่กำนดครับ ช่วยดู และแนะนำให้ด้วยครับ
Code: Select all
Sub Macro1()
Application.ScreenUpdating = False
Range("AJ11").Select
Range("AJ11:BO800").Select
Selection.Clear
Range("A11:AF800").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
Range("AH2:AI2"), CopyToRange:=Range("AJ11:BO11"), Unique:=False
Application.ScreenUpdating = True
Range("AJ1:BO1").Select
End Sub
ปัญหาคือต้องการกรอกข้อมูนที่กำนดใน AH2 และ AI2 คือค่าที่อยู่ใน Column AH และ Column AG ครับให้กรอกข้อมูนใน A11:AH34 ที่มีค่ากำนดใน AH2 และ AI2 ลงไปที่ AJ11:BO11 ลงไปครับ
ขอบคุณท่านล่วงหน้าครับ
และครั้งนี้คือ
วังวู ช่ง wrote:snasui wrote: 
ต้องขออภัยที่บอกว่า สมาชิกทุกคนมีความเท่าเทียมกันครับ เมื่อผมมีกฎที่จะไม่เขียนให้ก่อนก็ต้องเป็นไปตามนั้นครับ
เรืยน ท่าน อาจารย์ และสมาชิกทุกท่านครับ ช่วยดู และแนะนำตามนี้ว่าติดปัญหาตรงไหน ช่วยแกะให้ด้วยครับ
ขอบคุณล่วงหน้าครับ
เป็นปัญหาเดิมหรือไม่ ช่วยอธิบายว่า Code ที่ส่งมาใหม่นี้
ต้องการจะทำอะไรบ้างเป็นลำดับครับ
Re: Code การกรอกข้อมูนที่มีเงื่อนไข
Posted: Sat Sep 29, 2012 9:21 pm
by วังวู ช่ง
เรียน ท่าน อาจารย์ครับ ถ้าไม่เป็นกานรบกวนมาก กะรูนาช่วยปรับโคดนี้ให้แด่ครับผมพะอยายามทำแต่ทำไม่ได้ครับ
ข้อมูนคือข้างเทิงครับ
ขอบคุณล่วงหน้าครับ
Code: Select all
Sub Macro1()
Application.ScreenUpdating = False
Range("AJ11").Select
Range("AJ11:BO800").Select
Selection.Clear
Range("A11:AF800").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
Range("AH2:AI2"), CopyToRange:=Range("AJ11:BO11"), Unique:=False
Application.ScreenUpdating = True
Range("AJ1:BO1").Select
End Sub
Re: Code การกรอกข้อมูนที่มีเงื่อนไข
Posted: Sat Sep 29, 2012 9:39 pm
by snasui

ในการเขียน Code มาสองครั้ง ตำแหน่งในการวางข้อมูลไม่เหมือนเดิม คุณควรจะเล่ามาตามที่ผมแจ้งไปเพื่อจะได้เข้าใจตรงกันครับ
snasui wrote:เป็นปัญหาเดิมหรือไม่ ช่วยอธิบายว่า Code ที่ส่งมาใหม่นี้ต้องการจะทำอะไรบ้างเป็นลำดับครับ
Re: Code การกรอกข้อมูนที่มีเงื่อนไข
Posted: Sun Sep 30, 2012 8:38 am
by วังวู ช่ง
snasui wrote:
ในการเขียน Code มาสองครั้ง ตำแหน่งในการวางข้อมูลไม่เหมือนเดิม คุณควรจะเล่ามาตามที่ผมแจ้งไปเพื่อจะได้เข้าใจตรงกันครับ
snasui wrote:เป็นปัญหาเดิมหรือไม่ ช่วยอธิบายว่า Code ที่ส่งมาใหม่นี้ต้องการจะทำอะไรบ้างเป็นลำดับครับ
เรียนท่านอาจารย์ครับ ความต้องการคือ เมื่อป้อน ระหัดหน่วยงาน ใน Column AG ใส่ AI2 และป้อน ระหัดเมือง ใน Column AH ใส่ AH2 เมื่อ Run Macro ให้กรอกข้อมูนจาก A11:AF11 ลงลุ่มที่มีค่าใน Column AG:AH ตามที่กำหนดใน AH2:AI2 ใส่ AJ11:BO11 ลงลุ่มครับ
ขอบคุณล่วงหน้าท่านอาจารย์ครับ
Re: Code การกรอกข้อมูนที่มีเงื่อนไข
Posted: Sun Sep 30, 2012 9:04 am
by snasui

การทำเช่นนั้นสามารถใช้สูตรเข้ามาช่วยได้ครับ ผมทำตัวอย่างมาให้แล้วตามไฟล์แนบ
ให้สังเกตที่เซลล์ AI3, AI11:AI34, AJ11:AJ34, AK11:BO34 ครับ
Re: Code การกรอกข้อมูนที่มีเงื่อนไข
Posted: Sun Sep 30, 2012 7:29 pm
by วังวู ช่ง
snasui wrote:
การทำเช่นนั้นสามารถใช้สูตรเข้ามาช่วยได้ครับ ผมทำตัวอย่างมาให้แล้วตามไฟล์แนบ
ให้สังเกตที่เซลล์ AI3, AI11:AI34, AJ11:AJ34, AK11:BO34 ครับ
ขอบคุณท่าน อาจารย์มากครับ ทำแบบอาจารย์ทำมานี้ดีกว่าครับ ผมคิดว่าคงใช้ Macro จึ่งทำได้ แต่ใช้สูตรได้ก่อยิ่งดีครับ ขอบคุณท่านอาจารย์มากๆครับ
Re: Code การกรอกข้อมูนที่มีเงื่อนไข
Posted: Mon Nov 26, 2012 7:39 pm
by วังวู ช่ง
snasui wrote:
การทำเช่นนั้นสามารถใช้สูตรเข้ามาช่วยได้ครับ ผมทำตัวอย่างมาให้แล้วตามไฟล์แนบ
ให้สังเกตที่เซลล์ AI3, AI11:AI34, AJ11:AJ34, AK11:BO34 ครับ
เรียน ท่าน อาจารย์ และสะมาชิกที่รู้ทุกท่านครับ ถ้าต้องกาน ๒ เงื่อนไขดั่งนี้ตื่มจะปรับสูตร์อย่างไลครับ
๑. ค่าใน AI2 เป็นหว่าง ให้แสดงค่าที่ป้อนใน AH2
๒. ถ้าค่าใน AI2 และ AH2 เป็นหว่างให้ออกค่าทังหมดใน A11:AF11 ลงล่างจนหมดครับ ดูตัวอย่างใน List1 และ List2 ครับ
Re: Code การกรอกข้อมูนที่มีเงื่อนไข
Posted: Mon Nov 26, 2012 9:52 pm
by snasui

ลองตามนี้ครับ
- ที่ AI3 ปรับสูตรเป็น
=IF(COUNT(Criteria)=0,COUNT($AH$11:$AH$34),IF(AI2="",COUNTIF($AH$11:$AH$34,$AH$2),IF($AH$2="",COUNTIF($AG$11:$AG$34,$AI$2),SUMPRODUCT(--(AH11:AH34=AH2),--(AG11:AG34=AI2)))))
Enter
- ที่ AI11 ปรับสูตรเป็น
=IF(ROWS(AI$11:AI11)>$AI$3,"",SMALL(IF(IF(COUNT(Criteria)=0,$AH$11:$AH$34<>"",IF($AH$2<>"",$AH$11:$AH$34=$AH$2,IF($AI$2<>"",$AG$11:$AG$34=$AI$2))),ROW($AH$11:$AH$34)-ROW($AH$11)+1),ROWS(AI$11:AI11)))
Ctrl+Shift+Enter > Copy ลงด้านล่าง
Re: Code การกรอกข้อมูนที่มีเงื่อนไข
Posted: Tue Nov 27, 2012 11:08 am
by วังวู ช่ง
snasui wrote:
ลองตามนี้ครับ
- ที่ AI3 ปรับสูตรเป็น
=IF(COUNT(Criteria)=0,COUNT($AH$11:$AH$34),IF(AI2="",COUNTIF($AH$11:$AH$34,$AH$2),IF($AH$2="",COUNTIF($AG$11:$AG$34,$AI$2),SUMPRODUCT(--(AH11:AH34=AH2),--(AG11:AG34=AI2)))))
Enter
- ที่ AI11 ปรับสูตรเป็น
=IF(ROWS(AI$11:AI11)>$AI$3,"",SMALL(IF(IF(COUNT(Criteria)=0,$AH$11:$AH$34<>"",IF($AH$2<>"",$AH$11:$AH$34=$AH$2,IF($AI$2<>"",$AG$11:$AG$34=$AI$2))),ROW($AH$11:$AH$34)-ROW($AH$11)+1),ROWS(AI$11:AI11)))
Ctrl+Shift+Enter > Copy ลงด้านล่าง
เรียน ท่าน อาจารย์ ครับ ติดปัญหาเมื่อ AH2 มีข้อมูน และ AI2 เป็นหว่างครับตาม List1 ครับ
Re: Code การกรอกข้อมูนที่มีเงื่อนไข
Posted: Tue Nov 27, 2012 12:47 pm
by snasui
รหัสเมืองมีแค่ 1, 2 และ 3 ไม่ใช่นำรหัสหน่วยงานมาคีย์หรือคีย์สับกันไปมาครับ
Re: Code การกรอกข้อมูนที่มีเงื่อนไข
Posted: Tue Nov 27, 2012 3:56 pm
by วังวู ช่ง
snasui wrote:
รหัสเมืองมีแค่ 1, 2 และ 3 ไม่ใช่นำรหัสหน่วยงานมาคีย์หรือคีย์สับกันไปมาครับ
ขอโทดครับ ผมคีย์ผิดครับ แต่าเรียนท่านอาจารย์ลองตัวอย่างที่ผมทำมานี้ว่านันผิดตรงไหนครับ ความจิงแล้วถ้าป้อน ระหัดเมือง=806 และ ระหัดหน่วยงาน=20806005 มันต้องแสดงจำนวนพน 41 คนครับ
ขอบคุณล่วงหน้าครับ
นับถืาครับ
Re: Code การกรอกข้อมูนที่มีเงื่อนไข
Posted: Tue Nov 27, 2012 4:24 pm
by joo

ผิดตรงนี้ครับ =IF(COUNT(Criteria)=0,COUNT($AH$11:$AH$700),IF(AI2="",COUNTIF($AH$11:$AH$700,$AH$2),IF($AH$2="",COUNTIF($AG$11:$AG$700,$AI$2),SUMPRODUCT(--(AH11:AH
34=$AH$2),--(AG11:AG
34=$AI$2)))))
ที่ถูกควรปรับเป็น
=IF(COUNT(Criteria)=0,COUNT($AH$11:$AH$700),IF(AI2="",COUNTIF($AH$11:$AH$700,$AH$2),IF($AH$2="",COUNTIF($AG$11:$AG$700,$AI$2),SUMPRODUCT(--(AH11:AH700=$AH$2),--(AG11:AG700=$AI$2)))))
Re: Code การกรอกข้อมูนที่มีเงื่อนไข
Posted: Tue Nov 27, 2012 9:09 pm
by วังวู ช่ง
joo wrote:
ผิดตรงนี้ครับ =IF(COUNT(Criteria)=0,COUNT($AH$11:$AH$700),IF(AI2="",COUNTIF($AH$11:$AH$700,$AH$2),IF($AH$2="",COUNTIF($AG$11:$AG$700,$AI$2),SUMPRODUCT(--(AH11:AH
34=$AH$2),--(AG11:AG
34=$AI$2)))))
ที่ถูกควรปรับเป็น
=IF(COUNT(Criteria)=0,COUNT($AH$11:$AH$700),IF(AI2="",COUNTIF($AH$11:$AH$700,$AH$2),IF($AH$2="",COUNTIF($AG$11:$AG$700,$AI$2),SUMPRODUCT(--(AH11:AH700=$AH$2),--(AG11:AG700=$AI$2)))))
ขอบคุณท่านมากครับ ที่ช่วยชี้แนะครั้งนี้ครับ แต่รบกวนอีกหน่อยครับ เมื่อผมมาใช้กรับข้อมูนตัวจิงแล้วยังติดปัญหาอยู่ครับไม่รู้ว่าติดตรงไหนครับ ช่วยดูอีกทีครับ
เพระอยู่แขวงของผมมี 10 เมืองครับ ระหัดเมืองมี 10 ตัวเลขครับคือ 801-810 ครับ เมืองหนึ่งๆมีพะนักงานประมาน 700 กว่าคนครับ และพะนักงานนั้นแจกอยายไป 70 กว่าโรงเรียน แล้วระหัดหน่วยงานนั้นคือระหัดของโรงเรียนนั้นเองครับ
ขอบคุณทุกท่านล่วงหน้าครับ
Re: Code การกรอกข้อมูนที่มีเงื่อนไข
Posted: Wed Nov 28, 2012 8:06 am
by joo

ปัญหาคืออะไรครับช่วยแจ้งมาให้ชัดเจนอีกครั้งครับ และไฟล์ที่แนบมาก็ยังไม่ได้ระบุปัญหาที่พบและคำตอบที่ต้องการเลยครับ
Re: Code การกรอกข้อมูนที่มีเงื่อนไข
Posted: Wed Nov 28, 2012 6:13 pm
by วังวู ช่ง
joo wrote:
ปัญหาคืออะไรครับช่วยแจ้งมาให้ชัดเจนอีกครั้งครับ และไฟล์ที่แนบมาก็ยังไม่ได้ระบุปัญหาที่พบและคำตอบที่ต้องการเลยครับ
เรียน Joo ครับ ปัญหาคือ เมื่อ AH2 เป็นหว่างจึ่งออกค่าทุกต้อง เมื่อป้อน 806 ใส่ค่าออกมาไม่ตรงกับคำตอบครับ
ขอบคุณล่วงหน้าครับ