snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
คำแสดงเจตนา
ขอผลแห่งการให้ความรู้นี้ จงกลับไปยังผู้ที่เป็นเจ้าของเดิม แม้ข้าพเจ้าจะไม่รู้จักท่านก็ตาม ขอให้แสงแห่งปัญญาที่ท่านเคยจุดไว้ ได้กลับไปเติมเต็มชีวิตของท่านอีกครั้ง และขอให้เจตนาของข้าพเจ้าเป็นการคืนความดีอย่างสงบ
ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
djung
Member
Posts: 52 Joined: Thu Dec 15, 2011 2:58 am
#1
Post
by djung » Sat Feb 25, 2012 11:03 pm
ผมต้องการได้ข้อมูลโดยให้ VBA Filter ข้อมูลใน Sheet DATA MASTER โดยระบุเงื่อนไขใน MENU SHEET ว่าจะเอา Shift ใหน แล้ว copy ข้อมูลที่ต้องการไปวางไว้ใน Sheet DATA SELECT ตอน Run ครั้งแรกจะได้ข้อมูลที่ต้องการ แต่พอ Run ครั้งที่สองไป Filter จะไม่ทำงาน ไม่รู้ว่าต้องเขียนคำสั่งเงื่อนไขใหนให้เช็คว่า Filter ใน Sheet DATA MASTER มีแล้วหรือยังถ้ายังให้ใส่คำสั่ง Filter เข้าไป แต่ถ้ามีแล้วไม่ต้องใส่คำสั่งอีกนะครับ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31176 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#2
Post
by snasui » Sat Feb 25, 2012 11:17 pm
จากเงื่อนไขที่แจ้งมาลองบันทึก Macro ด้วยความสามารถของ
Advanced Filter ในการจัดการครับ โดยมีลำดับดังนี้
ทำการกรองรายการที่ต้องการจะ Filter ออกมาก่อน โดยใช้ Advanced Filter แบบ Unique List
นำค่าจากข้อ 1 ไปเป็น Criteria ในการ Filter ข้อมูลด้วย Advanced Filter อาจจะทำให้เลือกได้ด้วย Validation
เราสามารถใช้สูตร เช่น Match, Countif ตรวจสอบว่าข้อมูลใดได้ Filter ไปแล้วหรือไม่ หาก Filter ไปแล้วก็กำหนดให้ Code ไม่ทำงานพร้อมแจ้งผู้ใช้ว่ามีข้อมูลอยู่แล้ว
ทำแล้วติดตรงไหนสามารถถามมาได้เรื่อย ๆ ครับ
djung
Member
Posts: 52 Joined: Thu Dec 15, 2011 2:58 am
#3
Post
by djung » Sat Feb 25, 2012 11:54 pm
ได้แล้วครับขอบคุณมากๆเลยครับ แต่สงสัยนิดหนึ่งตรง Unique List ว่าใช้ทำอะไรเหรอครับ
snasui
Site Admin
Posts: 31176 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#4
Post
by snasui » Sat Feb 25, 2012 11:57 pm
เพื่อจะ Filter
เฉพาะค่าที่ไม่ซ้ำ ออกมาใช้งานครับ
bank9597
Guru
Posts: 3868 Joined: Wed Aug 17, 2011 11:49 am
#5
Post
by bank9597 » Sun Feb 26, 2012 6:11 am
การทำ Unique List สามารถทำได้โดยการบันทึกมาโครได้เช่นกันครับ นำโค๊ดมาปรับเองนิดหน่อยกใช้งานได้แล้วครับ มีความเร็วสูงมาก เช่นเดียวกับการทำ Advance Filter ครับ ซึ่งสิ่งเหล่านี้เป็นความสามารถที่สุดเก่งของเอ็กเซลล์อยู่แล้ว หากสังเกตให้ดีก็จะเห็นว่ามี Criteria และ Extract อยู่ใน Range Name ซึ่งผมไม่แน่ใจว่าส่วนนี้หรือไม่ที่ทำให้การทำงานถึงได้เร็ว รบกวนอาจารย์ตอบด้วยน่ะครับ
Forum Rules
อย่าใช้ภาษาแชทในการตอบ-ถาม
ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
snasui
Site Admin
Posts: 31176 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#6
Post
by snasui » Sun Feb 26, 2012 7:46 am
ชื่อใน Range Name ที่โปรแกรมสร้างขึ้นมาจากการที่เรากำหนดเพื่อจะกระทำการใด ๆ เช่นกำหนด
Print Area ทำ
Advanced Filter เป็นต้น ไม่ได้ทำให้ความเร็วเพิ่มขึ้นครับ เป็นการอ้างอิงไปใช้ในตัวโปรแกรมเอง สังเกตหากว่าเราบันทึก Macro ตรง Criteria จะมีบอกว่าเป็นเซลล์ใด ซึ่งช่วงเซลล์ใน Code จะตรงกับชื่อที่โปรแกรมสร้างขึ้นมาครับ และช่วงข้อมูลใน Range Name ที่ชื่อ Criteria ก็จะเปลี่ยนไปตามที่เราเลือก Criteria เพื่อจะ Advanced Filter ใหม่เสมอครับ
bank9597
Guru
Posts: 3868 Joined: Wed Aug 17, 2011 11:49 am
#7
Post
by bank9597 » Sun Feb 26, 2012 7:53 am
ขอบคุณอาจารย์ที่ช่วยไขข้อข้องใจครับ
Forum Rules
อย่าใช้ภาษาแชทในการตอบ-ถาม
ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ