Page 1 of 3

ค้นหาข้อมูลโดยใช้สูตรและคอลัมภ์ช่วย

Posted: Sat Apr 21, 2012 5:21 pm
by joo
มีปัญหามารบกวนอีกแล้วครับท่าน...ช่วยแนะนำด้วยครับผม :D
- ในการค้นหาข้อมูลมาแสดงผมใช้คอลัมภ์ช่วยในการค้นหาข้อมูลพบว่าค่าที่ได้มาไม่ตรงตามที่ต้องการดังตัวอย่างที่ซีท look ซึ่งระบบไม่ได้มองแค่รหัส 2000 อย่างเดียวแต่จะรวมรหัสอื่นมาด้วย เช่น 20,200,2000 ไม่เข้าใจว่าทำไมถึงเป็นเช่นนั้นครับ
- สำหรับที่ซีท look1 ค้นหาโดยใช้เงื่อนไขเดือนกับปีโดยใช้คอลัมภ์ช่วยหาเหมือนกันแต่ดูแล้วยุ่งยากหลายขั้นตอนพอจะมีวิธีที่สั้นกระทัดรัดกว่านี้ไหมครับ
- ที่ซีท Report ผมใช้การค้นหาโดยใช้สูตรโดยมีเงื่อนไขขึ้นอยู่กับรหัสและปีงบประมาณ ตอนนี้ทำได้เพียงค้นหาตามรหัสส่วนเงื่อนไขหลังยังไม่ได้ครับ

Re: ค้นหาข้อมูลโดยใช้สูตรและคอลัมภ์ช่วย

Posted: Sat Apr 21, 2012 9:53 pm
by ysamroeng
1. การใช้ SEARCH เหมาะสำหรับการค้นหา โดยการป้อนเพียงบางส่วนของคำหรือของเงื่อนไข แล้วดึงข้อมูลมาแสดง เช่น รายชื่อพนักงานที่ขึ้นต้นว่า "สม" จะสมชาย สมหญิง สมทรง ก็จะแสดงออกมาทั้งหมด แต่กรณีนี้คุณจะค้นหารหัสพนักงาน จึงควรค้นหาแบบระบุไปเลยว่า รหัสพนักงานคนไหน ดังนั้น ในชีท database ที่เซลล์ L4 จึงควรเปลี่ยนสูตรเป็น =IF(AND(B4=look!$F$5,A4=look!$F$6),LOOKUP(9.99999999999999E+307,Database!L$3:L3)+1,"") แล้วคัดลอกลงมา

2. ยังสงสัยว่า ในการระบุเงื่อนไขเป็นชื่อเดือน ในคอลัมน์ช่วยให้แสดงเดือนเป็น mmmm แต่ในชีท look2 กลับเลือกเดือนเป็นภาษาไทย ผมลองทำรายชื่อเดือนขึ้นมา (คอลัมน์ P) แล้วอ้างอิงรายการเลือกไปยังช่วงชื่อเดือน แล้วปรับสูตรในคอลัมน์ P ชีท database ใหม่ (โดยไม่จำเป็นต้องมี M และ O)
P4 =IF(AND(A4=look1!$F$5,MONTH(F4)=look1!$F$3),LOOKUP(9.99999999999999E+307,Database!P$3:P3)+1,"") แล้วคัดลอกสูตรลงมา

3. ไม่ว่าจะในชีท look, look1 หรือ report ส่วนที่แสดงข้อมูลด้านล่างนั้น ใช้สูตรลักษณะเดียวกันทั้งหมดครับ เพียงแต่ไปอ้างอิงจากคอลัมน์ช่วยในชีท database คนละคอลัมน์กันเท่านั้น สาระสำคัญคือ สูตรในแต่ละคอลัมน์ช่วยนั้นต่างหาก (ในชีท report ทำไมต้องเขียนอะเรย์ ทั้งๆ ที่ใช้สูตรเหมือนชีทก่อนหน้าก็ได้แล้ว)

Re: ค้นหาข้อมูลโดยใช้สูตรและคอลัมภ์ช่วย

Posted: Sun Apr 22, 2012 6:58 am
by joo
:lol: ขอบคุณครับสำหรับการช่วยทดสอบปรับแก้ไขสูตรให้ มองข้ามสิ่งเล็กๆน้อยๆไปได้ :D
3. ไม่ว่าจะในชีท look, look1 หรือ report ส่วนที่แสดงข้อมูลด้านล่างนั้น ใช้สูตรลักษณะเดียวกันทั้งหมดครับ เพียงแต่ไปอ้างอิงจากคอลัมน์ช่วยในชีท database คนละคอลัมน์กันเท่านั้น สาระสำคัญคือ สูตรในแต่ละคอลัมน์ช่วยนั้นต่างหาก (ในชีท report ทำไมต้องเขียนอะเรย์ ทั้งๆ ที่ใช้สูตรเหมือนชีทก่อนหน้าก็ได้แล้ว)
ที่ซีท Report นั้นต้องการใช้สูตรดึงข้อมูลให้มาแสดงโดยตรงเลย โดยไม่ต้องทำคอลัมภ์ช่วยที่ซีท Database มันก็จะสะดวกไปอีกแบบหนึ่งที่ไม่ต้องไปยุ่งกับฐานข้อมูล :D
ได้ลองปรับสูตรที่ซีท Report ใหม่ที่ C12
=INDEX(Database!A$4:A$10,MATCH($F5,Database!$B$4:$B$10,0),MATCH($F6,Database!$A$4:$A$10,0))
ก็แสดงข้อมูลได้ครับแต่ข้อมูลมันจะซ้ำๆกันและถ้าเงื่อนไขไม่ตรงจะขึ้น #N/A ครับ :D

Re: ค้นหาข้อมูลโดยใช้สูตรและคอลัมภ์ช่วย

Posted: Sun Apr 22, 2012 8:10 am
by snasui
joo wrote:ได้ลองปรับสูตรที่ซีท Report ใหม่ที่ C12
=INDEX(Database!A$4:A$10,MATCH($F5,Database!$B$4:$B$10,0),MATCH($F6,Database!$A$4:$A$10,0))
ก็แสดงข้อมูลได้ครับแต่ข้อมูลมันจะซ้ำๆกันและถ้าเงื่อนไขไม่ตรงจะขึ้น #N/A ครับ
สูตรนี้ใช้ดึงข้อมูลจากตารางแบบ 2 ทาง คือ ทางบรรทัดและทางคอลัมน์ แต่จากโจทย์นี้ต้องการดึงข้อมูลทางบรรทัดเท่านั้น เพียงแต่ต้องเข้า 2 เงื่อนไข คือ รหัสพนักงานและปี จึงสามารถเปลี่ยนสูตรเป็น

=INDEX(Database!A$4:A$10,MATCH(1,If(Database!$B$4:$B$10=$F$5,IF(Database!$A$4:$A$10=$F$6,1)),0))

Ctrl+Shift+Enter

ส่วนเงื่อนไขไม่ตรงก็จะขึ้น #N/A ซึ่งเป็นเรื่องปกติ อีกอย่าง หากเงื่อนไขไม่ตรง F7, F8 ก็ต้องเป็น 0 เพราะเป็นการคำนวณแบบนับ และ รวม โดยใช้เงื่อนไขเดียวกันคือรหัสพนักงานและปี จากกรณีนี้เราสามารถนำมาประยุกต์เพิ่มเติมได้เป็น

=If($F$7=0,"",INDEX(Database!A$4:A$10,MATCH(1,If(Database!$B$4:$B$10=$F$5,IF(Database!$A$4:$A$10=$F$6,1)),0)))

Ctrl+Shift+Enter

Re: ค้นหาข้อมูลโดยใช้สูตรและคอลัมภ์ช่วย

Posted: Mon Apr 23, 2012 9:18 am
by joo
ขอบคุณครับท่านอาจารย์ทดลองดูแล้วแต่ยังไม่ตรงกับที่ต้องการครับ เช่น รหัส 2000 ผ่านการอบรมมาแล้ว 2 ครั้ง ข้อมูลที่แสดงออกมากลับมากกว่า 2 ครั้ง เดิมทีผมใช้สูตรแบบนี้
=IF(ROWS($C$12:C12)>$F$7,"",INDEX(Database!A$4:A$10,SMALL(IF(Database!$B$4:$B$10=Report!$F$5,ROW(Database!$A$4:$A$10)-ROW(Database!$B$4)+1),ROWS($C$12:C12))))
ค่าที่แสดงออกมาได้ถูกต้องเพียงแต่เข้าเงื่อนไขเดียวเท่านั้นพอเปลี่ยนปีข้อมูลกลับไม่เปลี่ยนตามครับ :D

Re: ค้นหาข้อมูลโดยใช้สูตรและคอลัมภ์ช่วย

Posted: Mon Apr 23, 2012 9:41 am
by snasui
:D แนบตัวอย่างมาใหม่ดีกว่าครับ แจ้งว่าเปลี่ยนค่าเงื่อนไขในเซลล์ใดบ้าง และช่วยแจ้งให้ชัดเจนว่าต้องการผลลัพธ์เป็นอย่างไร เพื่อจะได้ตอบให้ตรงประเด็น แนบสูตรที่ได้ทดลองเขียนเองมาแล้วด้วยครับ

สูตรด้านบน :roll: ที่เขียนมาใช้เพื่อทำการ List รายการที่เข้าเงื่อนไขทั้งหมดออกมาแสดง หากมี 10 รายการก็จะ List ออกมาทั้งหมด (หากมีการ Copy สูตรลงไปทางด้านล่าง)

Re: ค้นหาข้อมูลโดยใช้สูตรและคอลัมภ์ช่วย

Posted: Mon Apr 23, 2012 3:21 pm
by joo
ที่ซีท Report เซลล์ C12:M12 ต้องแสดงค่าที่ถูกต้องตามเงื่อนไข F5 และ F6 ตัวอย่างคำตอบตามไฟล์แนบครับ
ที่ซีท look1 ต้องการหาจำนวนบุคคลโดยไม่ต้องใช้คอลัมภ์เข้ามาช่วยโดยมีเงื่อนไขตาม F4 และ F5 ต้องปรับสูตรอย่างไรดีครับ :D

Re: ค้นหาข้อมูลโดยใช้สูตรและคอลัมภ์ช่วย

Posted: Mon Apr 23, 2012 5:26 pm
by joo
ผมลองใช้วิธีนี้ดูไม่แน่ใจว่าถูกวิธีหรือไม่ครับ ที่ซีท Report เซลล์ F7 คีย์ =SUMPRODUCT(--(Database!$B$4:$B$10=F$5),--(Database!$A$4:$A$10=$F6)) ทดสอบเปลี่ยนรหัสและปีดูก็สามารถแสดงค่าได้ถูกต้องครับ ส่วนซีทอื่นๆก็แสดงได้ถูกต้องเหมือนกันครับ:D

Re: ค้นหาข้อมูลโดยใช้สูตรและคอลัมภ์ช่วย

Posted: Mon Apr 23, 2012 8:25 pm
by snasui
:lol: จากโจทย์ด้านล่าง
ค้นหาข้อมูลโดยใช้ รหัสบุคคลและปีงบประมาณเป็นเงื่อนไขในการค้นหา เมื่อเปลี่ยนปีงบประมาณหรือรหัสบุคคลอย่างใดอย่างหนึ่งให้ข้อมูลที่แสดงมีการเปลี่ยนแปลงตามเงื่อนไข ถ้าไม่มีก็ให้แสดงค่าว่าง แต่ปัจจุบันทำได้เพียงเงื่อนไขเดียว คำตอบที่ต้องการคือเมื่อเลือกรหัสบุคคลและปีก็ให้แสดงค่าตามตัวอย่างนี้ครับ
และตัวอย่างสูตรทีใช้ดึงข้อมูลที่ C12 คือ

=IF(ROWS($C$12:C12)>$F$7,"",INDEX(Database!A$5:A$11,SMALL(IF(Database!$B$5:$B$11=$F$5,ROW(Database!$A$5:$A$11)-ROW(Database!$B$5)+1),ROWS($C$12:C12))))

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

=IF(ROWS($C$12:C12)>$F$7,"",INDEX(Database!A$5:A$11,SMALL(IF(Database!$B$5:$B$11=$F$5,IF(Database!$A$4:$A$10=$F$6,ROW(Database!$A$5:$A$11)-ROW(Database!$B$5)+1)),ROWS($C$12:C12))))

นอกจากนี้ที่ B12 ควรปรับสูตรเดิมคือ

=IF(C12<>"",(ROW()-11)*(NOT(ISBLANK(C12))),"")

เป็น

=IF(ROWS(B$12:B12)>$F$7,"",ROWS(B$12:B12))

Enter

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

Re: ค้นหาข้อมูลโดยใช้สูตรและคอลัมภ์ช่วย

Posted: Tue Apr 24, 2012 2:35 pm
by joo
ขอบคุณครับสำหรับคำแนะนำในการปรับปรุงแก้ไขสูตร ทดลองแล้วสามารถใช้งานได้ดีครับ :D
มีคำถามเพิ่มครับที่ซีท look1 เซลล์ C11 ผมใช้สูตรค้นหาข้อมูลโดยมีเงื่อนไขคือเดือนกับปี เมื่อนำไปใช้กับข้อมูลปริมาณมากๆ พบว่าคำนวณช้ามากหรือว่ามันเป็นธรรมดาของสูตรแบบอเรย์ครับ พอมีวิธีแก้ไขให้เร็วขึ้นบ้างไหมครับ สูตรที่ใช้แบบนี้ครับ
=IF(ROWS($C$11:C11)>$F$6,"",INDEX(Database!A$4:A$11,SMALL(IF(TEXT(Database!$F$4:$F$10,"mmmm")=$F$4,IF(Database!$A$4:$A$10=$F$5,ROW(Database!$A$4:$A$10)-ROW(Database!$B$4)+1)),ROWS($C$11:C11))))

Re: ค้นหาข้อมูลโดยใช้สูตรและคอลัมภ์ช่วย

Posted: Tue Apr 24, 2012 3:24 pm
by bank9597
:D จากไฟล์แนบอันล่าสุด ชีท look1 เซลล์ C11 มีสูตรนี้ =IF(N($B11),LOOKUP($B11,Database!$M:$M,Database!A:A),"")

ผมดูผิดตรงไหนไหมหนอ :roll:

Re: ค้นหาข้อมูลโดยใช้สูตรและคอลัมภ์ช่วย

Posted: Tue Apr 24, 2012 4:53 pm
by snasui
joo wrote:ขอบคุณครับสำหรับคำแนะนำในการปรับปรุงแก้ไขสูตร ทดลองแล้วสามารถใช้งานได้ดีครับ :D
มีคำถามเพิ่มครับที่ซีท look1 เซลล์ C11 ผมใช้สูตรค้นหาข้อมูลโดยมีเงื่อนไขคือเดือนกับปี เมื่อนำไปใช้กับข้อมูลปริมาณมากๆ พบว่าคำนวณช้ามากหรือว่ามันเป็นธรรมดาของสูตรแบบอเรย์ครับ พอมีวิธีแก้ไขให้เร็วขึ้นบ้างไหมครับ สูตรที่ใช้แบบนี้ครับ
=IF(ROWS($C$11:C11)>$F$6,"",INDEX(Database!A$4:A$11,SMALL(IF(TEXT(Database!$F$4:$F$10,"mmmm")=$F$4,IF(Database!$A$4:$A$10=$F$5,ROW(Database!$A$4:$A$10)-ROW(Database!$B$4)+1)),ROWS($C$11:C11))))
:lol: กรณีคำนวณช้าเป็นธรรมดาของสูตร Array ครับ :mrgreen:

การจะให้คำนวณเร็วขึ้นควรแทรกคอลัมน์สำหรับ List ลำดับของรายการจากข้อมูลทั้งหมดแล้วใช้ Index เข้ามาช่วย สูตรสำหรับคอลัมน์ช่วยก็จะได้เป็น เช่น Z12 คีย์

=IF(ROWS($C$11:C11)>$F$6,"",SMALL(IF(TEXT(Database!$F$4:$F$10,"mmmm")=$F$4,IF(Database!$A$4:$A$10=$F$5,ROW(Database!$A$4:$A$10)-ROW(Database!$B$4)+1)),ROWS($C$11:C11)))

Ctrl+Shift+Enter > Copy ลงด้านล่าง

จากนั้นใช้ Index เข้ามาช่วย เช่น

=INDEX(Database!A$4:A$11,$Z12)

Enter > Copy ไปด้านขวาและลงด้านล่าง

Re: ค้นหาข้อมูลโดยใช้สูตรและคอลัมภ์ช่วย

Posted: Tue Apr 24, 2012 5:54 pm
by bank9597
:D ตอบไม่เคยทันอาจารย์เลยจริงๆ :lol: :lol: :lol:

Re: ค้นหาข้อมูลโดยใช้สูตรและคอลัมภ์ช่วย

Posted: Thu Apr 26, 2012 7:42 am
by joo
ขอบคุณครับ ทดลองแล้วสามารถคำนวณได้เร็วขึ้นกว่าเดิมมากเลยครับ :D

Re: ค้นหาข้อมูลโดยใช้สูตรและคอลัมภ์ช่วย

Posted: Mon Apr 30, 2012 11:45 am
by joo
ขอคำแนะนำเพิ่มครับ คือว่าผมได้ลองใช้ VBA ช่วยในการค้นหาข้อมูลมาแสดง ที่ซีท Search โดยมี 2 เงื่อนไขคือ รหัสบุคคลกับปีงบประมาณ
และที่ซีท Search1 ค้นหาโดยมีเงื่อนไขคือ เดือนกับปีงบประมาณ ช่วยดูโค๊ดให้หน่อยครับต้องปรับเพิ่มแก้ไขอย่างไรดีครับ :D

Re: ค้นหาข้อมูลโดยใช้สูตรและคอลัมภ์ช่วย

Posted: Mon Apr 30, 2012 1:14 pm
by bank9597
:D ลองตามนี้ครับ
ที่ M3 คีย์ =E4
ที่ N3 คีย์ =E6
ที่ M4 คีย์ =F4
ที่ N4 คีย์ =F6
Procedure ชื่อ ShowDataTraining ปรับโค๊ดเป็น

Code: Select all


Sub ShowDataTraining()
    On Error Resume Next
    Application.EnableEvents = False
    Sheets("Database").Range("A3:K100").AdvancedFilter Action:=xlFilterInPlace, _
        CriteriaRange:=Sheets("Search").Range("M3:N4")
    Sheets("Database").Range("A4:K100").SpecialCells(xlCellTypeVisible).Copy
    Sheets("Search").Range("C12").PasteSpecial xlPasteValues
    Sheets("Database").ShowAllData
    Range("F4").Activate
    Application.CutCopyMode = False
    Application.EnableEvents = True
End Sub


ในชีท Search ปรับโค๊ดเป็น

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("F4:F6")) Is Nothing Then
        Call ShowDataTraining
    End If
End Sub

Re: ค้นหาข้อมูลโดยใช้สูตรและคอลัมภ์ช่วย

Posted: Mon Apr 30, 2012 2:43 pm
by joo
ขอบคุณครับคุณ bank9597 ที่แนะนำ ได้ทดลองดูแล้วก็ใช้งานได้ดี แต่ก็ต้องใส่สูตรเพิ่มเติมที่คอลัมภ์ B12 ไว้ล่วงหน้าและถ้าข้อมูลใน Database มีปริมาณมากก็จะต้องคอยปรับแก้ไข
เรนจ์ที่อ้างอิงในโค๊ดอยู่เรื่อยๆซึ่งดูแล้วไม่ค่อยยืดหยุ่นเท่าไร จากโค๊ดด้านล่างนี้น่าจะยืดหยุ่นดีเพียงแต่จะเพิ่มเงื่อนไขที่2ไว้ตรงไหนดีนี้แหละช่วยดูให้หน่อยครับ :D

Code: Select all

Option Explicit
Option Base 1

Sub ShowDataTraining()
Dim a() As Variant, lng As Long
Dim r As Range, rAll As Range
Dim rt As Range, rl As Long
Application.EnableEvents = False
Application.ScreenUpdating = False
rl = Rows.Count
With Worksheets("Database")
    Set rAll = .Range("B4", .Range("B" & rl).End(xlUp))
End With
For Each r In rAll
    If r = Worksheets("Search").Range("F5") Then
        lng = lng + 1
        ReDim Preserve a(12, lng)
        a(1, lng) = lng
        a(2, lng) = r.Offset(0, -1)
        a(3, lng) = r.Offset(0, 0)
        a(4, lng) = r.Offset(0, 1)
        a(5, lng) = r.Offset(0, 2)
        a(6, lng) = r.Offset(0, 3)
        a(7, lng) = r.Offset(0, 4)
        a(8, lng) = r.Offset(0, 5)
        a(9, lng) = r.Offset(0, 6)
        a(10, lng) = r.Offset(0, 7)
        a(11, lng) = r.Offset(0, 8)
        a(12, lng) = r.Offset(0, 9)
       
    End If
Next r
If lng > 0 Then
  With Worksheets("Search")
        Set rt = .Range("B12", .Range("Q" & lng - 1 + 12))
        If .Range("B12") <> "" Then 'Check if isblank
             .Range("B12", .Range("B" & rl).End(xlUp).Offset(0, 4)).ClearContents
        End If
        .Range("B12:M12").Copy
        rt.PasteSpecial xlPasteFormats
        rt = Application.Transpose(a)
        .Range("D12", .Range("D" & rl).End(xlUp)).NumberFormat = "00000"
        .Range(.Range("B11").End(xlDown).Offset(1, 0), .Range("Q" & rl)).Clear 'Change new start cell
        .Range("F4").Activate
    End With
Else
    MsgBox "Data not found."
End If
'Range("A5:E5").AutoFilter
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub

Re: ค้นหาข้อมูลโดยใช้สูตรและคอลัมภ์ช่วย

Posted: Mon Apr 30, 2012 3:22 pm
by snasui
joo wrote:ถ้าข้อมูลใน Database มีปริมาณมากก็จะต้องคอยปรับแก้ไข
เรนจ์ที่อ้างอิงในโค๊ดอยู่เรื่อยๆซึ่งดูแล้วไม่ค่อยยืดหยุ่นเท่าไร
:lol: เราสามารถปรับ Code ให้ยืดหยุ่นได้ครับ เช่น จาก

Code: Select all

Sheets("Database").Range("A3:K100").AdvancedFilter Action:=xlFilterInPlace, _
        CriteriaRange:=Sheets("Search").Range("M3:N4")
เราสามารถเปลี่ยนเป็น

Code: Select all

Sheets("Database").Range("A3",Range("K" & Rows.Count).End(xlUp)).AdvancedFilter Action:=xlFilterInPlace, _
        CriteriaRange:=Sheets("Search").Range("M3:N4")
ส่วน Code การ Search ด้วย Array นั้นไม่ง่ายนักแต่ก็เป็นประโยชน์หากต้องการเรียนรู้ กรณีมีเงื่อนไขอื่น ๆ หลายเงื่อนไข สามารถปรับที่ Code ด้านล่างครับ

Code: Select all

For Each r In rAll
    If r = Worksheets("Search").Range("F5") Then
ยกตัวอย่างเช่นปรับเป็น

Code: Select all

For Each r In rAll
    If r = Worksheets("Search").Range("F5") And r.Offset(0,1) = Worksheet("Search").Range("F6") Then

Re: ค้นหาข้อมูลโดยใช้สูตรและคอลัมภ์ช่วย

Posted: Mon Apr 30, 2012 3:36 pm
by bank9597
:D ผมไม่ค่อยเก่ง VBA เลยครับ (สูตรก็ไม่เก่ง) ต้องขออภัยจริงๆ คงต้องรอให้อาจารย์มาดูให้อีกทีน่ะครับ

สำหรับตามวิธีผมนั้น ผมทำตามที่พอทำได้ คือ ใช้สูตรเข้ามาช่วย โดยการกำหนด RangeName เข้ามาช่วย แต่หากเก่ง VBA แล้วก็ไม่จำเป็นต้องทำแบบนี้ครับ :D
ตามไฟล์แนบครับ

Re: ค้นหาข้อมูลโดยใช้สูตรและคอลัมภ์ช่วย

Posted: Mon Apr 30, 2012 5:33 pm
by joo
ขอบคุณครับที่ช่วยแนะนำสำหรับโค๊ดที่ท่านอาจารย์แนะนำ

Code: Select all

Sheets("Database").Range("A3",Range("K" & Rows.Count).End(xlUp)).AdvancedFilter Action:=xlFilterInPlace, _
        CriteriaRange:=Sheets("Search").Range("M3:N4")
ทดสอบแล้วพบว่าข้อมูลแสดงออกมาหมดเลยไม่ตรงตามเงื่อนไข
และโค๊ดนี้

Code: Select all

For Each r In rAll
    If r = Worksheets("Search").Range("F5") And r.Offset(0,1) = Worksheets("Search").Range("F6") Then
ทดลองดูแล้วข้อมูลไม่ยอมแสดง ขึ้นคำว่า Data No found ตลอดครับ :D