フィルタに基づく列の書式設定(Microsoft Excel)
Edは、データの大きなテーブルで、特定の列がアクティブにフィルタリングされているかどうかをすばやくスキャンして確認できるようにしたいと考えています。彼は、列に基づくフィルターが機能しているときに、条件付き書式を適用して列の背景色を変更する方法があるかどうか疑問に思います。
このタスクに取り組む方法はいくつかあります。それらはすべてマクロを含み、各マクロの目的は、特定の列に対してフィルターが機能しているかどうかを判別することです。 1つのオプションは、ワークシートでフィルターを調べる関数を作成し、フィルターが見つかった場合は、フィルターされた領域の各列をチェックして、その列でフィルターが機能しているかどうかを確認することです。次のマクロはまさにそれを行います。
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
マクロが機能しているフィルターを見つけると、フィルターされたテーブルの最初のセルまたはフィルターのある列全体が強調表示されます(黄色で表示されます)。セルまたは列全体が強調表示されているかどうかの判断は、bFullCol変数に割り当てられたTrue / False値に基づいています。
必要に応じて、特定の列に対してフィルターが有効であるかどうかに基づいて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 <= .Filters.Count Then If .Filters(lCol).On Then bHasFilter = True End If End With End If End Function
この関数を使用するには、ワークシートまたは条件付き書式ルールで次のような数式を使用するだけです。
=bHasFilter(F23)
この関数は最初に、フィルターが有効になっているかどうかを確認します。その場合、数式に渡されたセルの列がフィルター処理された列の範囲内にあるかどうかを計算します。 (数式で参照されている行は実際には重要ではありません。)そうである場合は、その列に対してフィルターがオンになっているかどうかを確認します。
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
link:/ excelribbon-ExcelTipsMacros [ここをクリックして、新しいブラウザタブでその特別なページを開きます]
。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(13410)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。