(آموزشی) فیلتر سلول ها بر اساس تاریخ

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • ali.b

    • 2014/01/12
    • 798

    (آموزشی) فیلتر سلول ها بر اساس تاریخ

    سلام
    همون طور که برای من سوال پیش اومد و دوستان هم اخیرا سوال کردن فیلتر گرفتن با vb هست
    این دو تانمونه کد برای گرفتن فیلتر هست که یکی تاریخ رو تو خود کد درج میکنی مثل کد زیر
    کد:
    Sub Macro2()    ActiveSheet.Range("$B$3:$B$19").AutoFilter field:=1, Criteria1:= _
            ">=1393/09/01", Operator:=xlAnd, Criteria2:="<=1393/09/30"
    End Sub
    اما بخواین تاریخ ها رو در سلول های مورد نظر بنویسید و با اجرای کد تاریخ های بین اونها رو حساب کنه ازکد زیر استفاده کنید
    کد:
    Sub test()ActiveSheet.Range("$B$3").AutoFilter field:=1, Criteria1:= _
        ">=" & Sheet1.Range("e1"), Operator:=xlAnd, Criteria2:="<=" & Sheet1.Range("e2")
    End Sub
    حالا اگه بخوای دوتا فیترگیری داشته باشیم یعنی مثلا اول از تاریخ فلان تا تاریخ فلان فیلتر کن و بعد ستون یعدی دوباره کلمه فلان رو فیتر کن

    برایاین کار از کد زیر میتونید کمک بگیرید
    کد:
    Sub filrun()Application.ScreenUpdating = False
    Dim j As Integer, k As Integer
    j = Worksheets.Count
    For k = 2 To 9
    With Worksheets(k[COLOR=#0000cd])[/COLOR]
    [COLOR=#0000cd].Range("G3").AutoFilter [/COLOR][COLOR=#ff0000]Field:=7[/COLOR][COLOR=#0000cd], Criteria1:=Sheet13.Range("f1") _[/COLOR]
    [COLOR=#0000cd], Operator:=xlOr, Criteria2:=Sheet13.Range("g1")[/COLOR]
    [COLOR=#0000cd]'.Range("L3").AutoFilter [/COLOR][COLOR=#ff0000]Field:=12[/COLOR][COLOR=#0000cd], Criteria1:=Sheet13.Range("m1")[/COLOR]
    [COLOR=#0000cd]
    [/COLOR]
    [COLOR=#0000cd]End With[/COLOR]
    [COLOR=#0000cd]Next k[/COLOR]
    Application.ScreenUpdating = True
    End Sub
    درضمن این کد کارش اینه که تمامی شیت های 2 تا 9 رو خودکار بر اساس داده ها فیلتر بگیره و برای کسانی که شیت های زیاد اما با فرم یکسان دارد خوبه امانکته اموزشی این بحث بخش ابی هست و بخش قرمر شماره ستونی که میخواین فیلتر روش اعمال بشه
    [CENTER]
    [/CENTER]
  • ali.b

    • 2014/01/12
    • 798

    #2
    حالا اگه فیلتر کردیم و دوباره بخوایم به حالت عادی برگردونیم از روش زیر استفاده میکنیم
    کد:
    Sub filundo()
    Application.ScreenUpdating = False
    Dim j As Integer, k As Integer
    j = Worksheets.Count
    For k = 2 To 9
    With Worksheets(k)
    .Range("G3").AutoFilter Field:=7
    '.Range("l3").AutoFilter Field:=12
    End With
    Next k
    Application.ScreenUpdating = True
    End Sub
    [CENTER]
    [/CENTER]

    کامنت

    چند لحظه..