Page 1 of 1

ต้องการ หน้าต่าง search ที่แสดงผลทั้งหมด

Posted: Tue Aug 07, 2012 11:37 am
by issabye
ผมมีไฟล์ DBF คนไข้อยู่ 50500 record
ประกอบด้วย 4 ฟิลด์
1: ชื่อ : text
2: นามสกุล : text
3: อายุ : text(เด็ก or ผู้ใหญ่)
4: เลขที่บัตร : number
ปัจจุบันใช้โปรแกรม DBF Viewer Pro
ซึ่งมีหน้าต่าง search+search results ตามรูป

ปัญหาคือ DBF Viewer Pro ทำงานบน Win98, WinMe
พอมา XP,Win7 ไม่สามารถใช้ได้
จึงคิดว่าจะลองมาใช้ Excel

มีวิธีใดบ้าง ที่จะให้ Excel มีหน้าต่าง Search+Search Results
โดยเวลา search : สามารถคีย์ได้ทั้ง บางส่วนของชื่อ บางส่วนของนามสกุล
บางส่วนของอายุ บางส่วนของเลขที่บัตร
แล้วแสดงผลทั้งหมดออกมา

ขอบคุณท่านผู้รู้ทุกท่านล่วงหน้าครับ

Re: ต้องการ หน้าต่าง search ที่แสดงผลทั้งหมด

Posted: Tue Aug 07, 2012 2:08 pm
by snasui
:D ลองทำตัวอย่างเป็นไฟล์ Excel แสดงตัวอย่างคำตอบที่ต้องการมาด้วยจะได้ง่ายต่อการเขียนสูตร ง่ายต่อการอ้างอิงตำแหน่งครับ

Re: ต้องการ หน้าต่าง search ที่แสดงผลทั้งหมด

Posted: Tue Aug 07, 2012 8:08 pm
by issabye
ขอบคุณอาจารย์คนควนมากครับ
ผมแนบไฟล์ excel มาให้อาจารย์พิจารณา
ผม upload ไฟล์ตัวจริงมาไม่ได้ ระบบฟ้องว่าใหญ่เกินไป
ผมเลยหั่นมาบางส่วน อาจารย์ช่วยดูให้หน่อยนะครับ

ความต้องการของผมคือ
สร้างหน้าต่าง search
ที่คีย์ข้อความ แล้วมีหน้าต่างแสดงผลทั้งหมดตามคีย์นะครับ

อาจารย์อยู่สงขลาหรือครับ
ผมเองก็อยู่สงขลา อ.สะเดา
เปิดคลินิกอยู่ที่นั่นครับ

กรุณาชี้แนะด้วย
ขอบพระคุณอาจารย์มากมาก

Re: ต้องการ หน้าต่าง search ที่แสดงผลทั้งหมด

Posted: Tue Aug 07, 2012 9:21 pm
by snasui
:D ลองดูตัวอย่างไฟล์การใช้สูตรในการหาข้อมูลครับ โดย
  1. ที่ชีท บัตรคนไข้ เซลล์ E1 คีย์ 0 เพื่อเป็นค่าเริ่มต้นให้กับสูตรที่เซลล์ E2
  2. ที่ชีท บัตรคนไข้ เซลล์ E2 คีย์สูตรสำหรับการให้ลำดับที่หากพบว่าค่าที่อยู่ใน C1 ของ Sheet1 มีอยู่ในเซลล์ใดเซลล์หนึ่งหรือหลายเซลล์ในช่วง A2:D2 ของชีท บัตรคนไข้
    =IF(ISNUMBER(SEARCH(Sheet1!$C$1,A2&B2&C2&D2)),LOOKUP(9.99999999999999E+307,E$1:E1)+1,"")
    Enter > Copy ลงด้านล่าง
  3. ที่ Sheet1 เซลล์ G1 คีย์สูตรเพื่อนับค่าที่พบว่ามีจำนวนเท่าไร
    =LOOKUP(9.99999999999999E+307,บัตรคนไข้!E:E)
    Enter
  4. ที่ Sheet1 เซลล์ G3 กำหนดให้ Link มาจาก Scroll Bar ดูการกำหนดค่าใน Scroll Bar โดยคลิกขวาบน Scroll Bar > Format Control
  5. ที่ Sheet1 เซลล์ I3 คีย์สูตรเพื่อหาจำนวนหน้าที่มากที่สุด
    =INT(G1/20)+1
    Enter
  6. ที่ Sheet1 เซลล์ A5 คีย์สูตรเพื่อให้ค่าลำดับ
    =IF(20*($G$3-1)+ROWS(A$5:A5)>$G$1,"",20*($G$3-1)+ROWS(A$5:A5))
    Enter > Copy ลงด้านล่าง
  7. ที่ Sheet1 เซลล์ B5 คีย์สูตรเพื่อแสดงค่าที่พบ
    =IF(A5="","",LOOKUP($A5,บัตรคนไข้!$E:$E,บัตรคนไข้!A:A))
    Enter > Copy ไปทางขวาและลงด้านล่าง
ดูไฟล์แนบประกอบครับ

บ้านผมอยู่ที่สะเดาเช่นกันครับ ชื่อหมู่บ้านยางเกาะ เข้าทางหมู่บ้านหัวถนนไป 6 กม. แต่มาทำงานอยู่ที่กรุงเทพครับ

Re: ต้องการ หน้าต่าง search ที่แสดงผลทั้งหมด

Posted: Tue Aug 07, 2012 10:13 pm
by issabye
ผมโหลดไฟล์ที่อาจารย์ให้มา ดูแล้วครับ
ยอมรับเลยว่าฝีมืออาจารย์สุดยอดจริงๆ
ลองใช้ดูแล้ว work มาก
ขอเวลาผมศึกษาดู
หากติดขัดอะไร จะมารบกวนอาจารย์อีก

ผมมีคนไข้จากยางเกาะหลายคนเหมือนกัน
คนยางเกาะน่ารักมาก
ยินดีครับที่ได้รู้จักคนบ้านเดียวกัน

ฝากเนื้อฝากตัวด้วยครับ

ขอบคุณอีกครั้ง

Re: ต้องการ หน้าต่าง search ที่แสดงผลทั้งหมด

Posted: Wed Aug 08, 2012 5:25 pm
by issabye
มารายงานความคืบหน้าครับ

ผมเอาไฟล์ Example.xlsx[77.48 KiB] ที่อาจารย์คนควนทำให้
มาดัดแปลง โดย copy ข้อมูล 50,500 records มาใส่
ปรากฎว่า ได้ผล คือ search ได้
search results ตรงตาม key

แต่เจอข้อเสีย 2 ข้อใหญ่
1. ไฟล์ใหญ่ขึ้น จาก 77.48kb --> 2.9MB
ทำให้ใช้เวลาเปิดไฟล์นานมาก เกือบ 5 นาที
2. โปรแกรมใช้เวลานานมากในการ search
เทียบกับ Find ปกติจะใช้เวลาประมาณ 2 วิ
แต่อันนี้ใช้เวลาแต่ละครั้งประมาณ 20 วิ

เบื้องต้นนี้ ผมดูแล้ว มันอาจไม่ work สำหรับงานผม

ยังไงก็ขอบคุณอาจารย์คนควนนะครับ
สำหรับความรู้

ท่านผู้รู้ท่านอื่นมีอะไร ก็แนะนำด้วย
ขอบคุณครับ