ایجاد سوال
dark_mode
0 دوستدار 0 امتیاز منفی
15 visibility
موضوع: آفیس توسط:

در یک جدول بزرگ از داده ها، اد دوست دارد بتواند به سرعت اسکن کند و ببیند آیا یک ستون خاص به طور فعال فیلتر می شود یا خیر. او نمی پرسد آیا راهی برای اعمال قالب بندی شرطی برای تغییر رنگ پس زمینه یک ستون وجود دارد، وقتی فیلتری در بازی وجود دارد که بر اساس آن ستون است.

چند راه وجود دارد که می توانید به این کار نزدیک شوید. همه آنها شامل ماکروها هستند و هدف هر ماکرو تعیین اینکه آیا فیلتر برای یک ستون خاص در حال بازی است یا خیر. یکی از گزینه ها ایجاد تابعی است که کاربرگ را برای یک فیلتر بررسی می کند و اگر یکی را در جای خود پیدا کرد، هر ستون را در ناحیه فیلتر شده بررسی کنید تا ببینید آیا فیلتری در آن ستون وجود دارد یا خیر. ماکرو زیر دقیقاً این کار را انجام می دهد.

Sub ColorFilterColumn()
    Dim flt As Filter
    Dim iCol As Integer
    Dim lRow As Long
    Dim rTemp As Range
    Dim bFullCol As Boolean

     Set as True if you want entire column shaded
    bFullCol = False

    If ActiveSheet.AutoFilterMode Then
        iCol = ActiveSheet.AutoFilter.Range.Column
        lRow = ActiveSheet.AutoFilter.Range.Row
        Application.EnableEvents = False
        For Each flt In ActiveSheet.AutoFilter.Filters
            If bFullCol Then
                Set rTemp = Cells(lRow, iCol).EntireColumn
            Else
                Set rTemp = Cells(lRow, iCol)
            End If

            If flt.On Then
                rTemp.Interior.Color = vbYellow
            Else
                rTemp.Interior.ColorIndex = xlColorIndexNone
            End If

            Set rTemp = Nothing
            iCol = iCol + 1
        Next flt
        Application.EnableEvents = True
    End If
End Sub

اگر ماکرو فیلتری را که در حال کار است پیدا کند، اولین سلول جدول فیلتر شده یا کل ستونی را که فیلتر دارد (به رنگ زرد) برجسته می کند. تعیین اینکه آیا یک سلول یا کل ستون برجسته شده است بر اساس مقدار True/False اختصاص داده شده به متغیر bFullCol است.

اگر ترجیح می دهید، می توانید تابعی ایجاد کنید که بر اساس اینکه فیلتری برای یک ستون خاص وجود دارد یا خیر، True یا False را برمی گرداند. با چنین تابعی می توانید یک قانون قالب بندی شرطی ایجاد کنید که ستون را بر اساس مقدار بازگشتی قالب بندی می کند.

Function bHasFilter(rcell As Range) As Boolean
    Dim lBaseCol As Long
    Dim lCol As Long

    Application.Volatile
    bHasFilter = False

    If ActiveSheet.AutoFilterMode Then
        With ActiveSheet.AutoFilter
            lBaseCol = .Range.Column
            lCol = rcell.Column - lBaseCol + 1
            If lCol > 0 And lCol 

برای استفاده از این تابع، به سادگی از فرمولی مانند زیر در کاربرگ خود یا در قانون قالب بندی شرطی استفاده کنید:

=bHasFilter(F23)

این تابع ابتدا بررسی می کند که آیا فیلتری در کار است یا خیر. اگر چنین است، آنگاه محاسبه می کند که آیا ستون سلولی که به فرمول ارسال می شود در محدوده ستون های فیلتر شده قرار دارد یا خیر. (ردیف ارجاع شده در فرمول واقعاً مهم نیست.) اگر چنین است، بررسی می کند که آیا فیلتر برای آن ستون روشن است یا خیر.

اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

looks_5نام شما برای نمایش - اختیاری
حریم شخصی : آدرس ایمیل شما محفوظ میماند و برای استفاده های تجاری و تبلیغاتی به کار نمی رود
عدد چهار رقمی در تصویر را وارد کنید

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
اگر حساب گوگل دارید به راحتی وارید شوید

0 پاسخ وجود دارد

سوال مشابهی یافت نشد

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما

23.2k سوال

8.5k پاسخ

608 دیدگاه

9.7k کاربر

116 نفر آنلاین
0 عضو و 116 مهمان در سایت حاضرند
بازدید امروز: 1972
بازدید دیروز: 12311
بازدید کل: 15372308
...