Page 1 of 1

ถามเรื่องการFiter โดยเป็นข้อมูลแบบ Dymamic ครับ

Posted: Thu Jan 07, 2016 1:49 pm
by nutpochan
label for vendor.xlsm
โค๊ตคือ

Code: Select all

    Range("A1:AQ1").Select
    Selection.AutoFilter
    
    ActiveSheet.Range("$A$1:$AQ$16").AutoFilter Field:=43, Criteria1:=Array("2" _
        , "3", "4", "="), Operator:=xlFilterValues
  
    ActiveSheet.Range("$A$1:$AQ$16").AutoFilter Field:=42, Criteria1:="<>"
    Range("AO10").Select
    
    ActiveSheet.Range("$A$1:$AQ$16").AutoFilter Field:=41, Criteria1:="<>"
คำถามที่ 1 คือ ผมอยาก sellection.autofiter ข้อมูลโดยมาทางขวาทั้งหมดไม่ใช่เพียง a ถึง aq เพราะผมมีข้อมูลเพิ่มขึ้นทุกวัน

คำถามที่ 2 คือ หลังจาก sellection.autofiter ผมอยากเซ็ตข้อมูลในช่องทางขวาสุด ให้เป็น 2,4,3 โดยข้อมูลผมจะเพิ่มขึ้น เลยใช้คำสั่ง .AutoFilter Field:=43 ไม่ได้

คำถาม ที่ 3 หลังจากคำสั่งที่ 2 ผมต้องการเลื่อนมาทางซ้ายอีก 1 ช่อง เพื่อ fiter เฉพาะ <> แต่ในโค๊ดมันเป็น AutoFilter Field:=42 ซึ่งใช่ไม่ได้

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

ไฟล์แนบมาแล้วครับ

Re: ถามเรื่องการFiter โดยเป็นข้อมูลแบบ Dymamic ครับ

Posted: Thu Jan 07, 2016 1:50 pm
by nutpochan
label for vendor.xlsm
ไฟล์แนบครับ

Re: ถามเรื่องการFiter โดยเป็นข้อมูลแบบ Dymamic ครับ

Posted: Thu Jan 07, 2016 3:42 pm
by DhitiBank
:) สำหรับเรื่องโค้ด ลองปรับเป็นแบบนี้ครับ

Code: Select all

Public Sub FilterTest()
    Dim rRegion As Range, iCol As Integer
    With ThisWorkbook.ActiveSheet
        If .AutoFilterMode Then .AutoFilterMode = False
        Set rRegion = .UsedRange
    End With
        
    With rRegion
        iCol = .Columns.Count
        .AutoFilter Field:=iCol, Criteria1:=Array("2" _
        , "3", "4", "="), Operator:=xlFilterValues
        .AutoFilter Field:=iCol - 1, Criteria1:="<>"
        .AutoFilter Field:=iCol - 2, Criteria1:="<>"
    End With
End Sub