PDA

View Full Version : ขอคำแนะนำในเรื่องการใช้ Filter กับ Search ครับ



kanit_e
6 Jun 2007, 10:00
.........A.......................... B
1... cathy
2... caterrine
3 ...cindy
4 ...dian
5 ...daily
6... deva
7... delivery
8... finland
9 ...final
10 .festival
11 .funny

12 .gun
13 .game

ผมมีเรื่องรบกวนดังนี้ครับ คือผมมีข้อมูลอยู่ที่ แถว A ครับ แล้วในแถว B ผมจะทำการพิมพ์ข้อมูลของแถว A (พิมพ์ใส่อะไรก็ได้นะครับ Textbox Listbox หรือใส่ไปใน Cell เลยก็ได้แล้วแต่ความถนัดของท่านที่จะช่วยตอบครับ) เมื่อผมพิมพ์ C ในแถว B ลงช่องที่พิมพ์ก็จะมีข้อมูลของแถว A แต่จะมีแต่ข้อมูลที่ขึ้นต้นด้วย C เท่านั้น(cathy,caterrine,cindy) แล้วถ้าผมพิมพ์ Ci ข้อมูลก็จะเหลือแต่ข้อมูลที่ขึ้นต้นด้วย Ci เท่านั้น(Cindy) ครับผมรบกวนขอคำแนะนำครับขอบคุณครับ

วานิชย์
6 Jun 2007, 12:09
ตามตัวอย่างผมใช้วิธีการบันทึก Macro การเรียกใช้ Advanced Filter ครับ
:)

สมเกียรติ
6 Jun 2007, 12:53
ขอเสนออีกวิธีครับ ใช้ AutoFilter หาค่า TRUE จาก column ที่เราสร้างสูตรตรวจสอบอักขระนำหน้าว่าตรงกับที่ต้องการไหม

=LEFT(B4,LEN($F$2))=$F$2

kanit_e
6 Jun 2007, 15:10
ขอบคุณ อาจารย์สมเกียรติ คุณวานิชย์และทุกท่านครับหากติดปัญหาจะขออนุญาตรบกวนใหม่ครับ

kanit_e
6 Jun 2007, 15:22
รบกวนคุณวานิชย์ อาจารย์สมเกียรติ และทุกท่านอีกครับตามที่ตัวอย่างของคุณวานิชย์นั้นมาเกือบถูกทางแล้วครับแต่ว่า ผมอยากให้พิมพ์ที่ช่องนั้นแล้วปรากฎข้อมูลที่ช่องนั้นเลยครับไม่ต้องกด Show Data เช่นถ้าผมพิมพ์ที่ช่อง B1 ข้อมูลจะขึ้นที่ช่อง B1 เลยครับหรือว่าถ้าเป็น List Box หรือ Text Box พิมพ์ที่ List Box หรือ Text Box ก็จะ Show ข้อมูลที่นั้นเลยมันจะคล้ายๆ Function Key Press บน VB ครับแต่ผมมีความรู้ EXCEL เป็นศูนย์เลยครับ เลยไม่รู้จะทำยังไงดีรบกวนทุกท่านอีกครั้งครับ

สมเกียรติ
6 Jun 2007, 15:43
ดีที่บอกให้ทราบว่าไม่เก่ง Excel เท่าใดนัก ผมไม่อยากแนะนำให้ใช้ VBA หรือสูตรตามแฟ้มที่ผมแนบมาใหม่นี้หรอกครับ ถ้าไม่เก่ง ก็ขอให้ใช้อะไรที่ง่ายๆหรือตนเองสามารถแก้ไขเองภายหลังได้ ซึ่งที่ขอมานั้น ท่าทางจะยากเกินกว่าจะทำต่อไปได้เอง อย่างไรก็ตามฝากตัวอย่างใหม่นี้ไว้ให้เรียนรู้ก็แล้วกัน

สูตรที่ผมสร้างไว้ในเซลล์ D4 : D16 เป็นสูตร array ที่สร้างขึ้นพร้อมกันทุกเซลล์ทีเดียว ขอให้อ่านเรื่องสูตร array ในเว็บนี้เพิ่มเติม ซึ่งสูตรที่ผมสร้างไว้จะแสดงเลขที่รายการของข้อมูลที่ต้องการ
=SMALL(IF(LEFT(B4:B16,LEN($E$2))=$E$2,A4:A16),A4:A16)

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

kanit_e
6 Jun 2007, 16:08
ขอบคุณครับอาจารย์ สมเกียรติผมได้ลองเอา File ของอาจารย์ไปลองใช้งานแล้วทำการ Validation เป็น List ที่ช่อง F4 และ F5 ผลที่ออกมาเกือบจะใช่แล้วครับติดตรงมีใน List ของผมมันจะขึ้น #Num! ในส่วนที่ไม่มีข้อมูลมาให้ผมจะต้องทำอย่างไรครับใน List ผมถึงจะไม่มี #Num! ขอบคุณครับ ผมแนบ File มาให้ครับ

สมเกียรติ
6 Jun 2007, 18:48
แก้ไข Validation > List ให้สูตรกำหนดขนาดตารางเท่าที่มีครับ
=OFFSET($E$4,0,0,COUNT($D$4:$D$16),1)

kanit_e
6 Jun 2007, 22:18
ขอบพระคุณอาจารย์สมเกียรติมากๆเลยครับ ไว้จะขอคำแนะนำดีๆอย่างนี้อีกครับ ขอบคุณทุกๆท่านด้วยครับ