Office
 Computer >> コンピューター >  >> ソフトウェア >> Office

Excel で VBA を使用して特定の値と等しくない値をオートフィルターする方法

この記事では、VBA を使用して、特定の値と等しくない値を自動フィルター処理する方法を紹介します。 エクセルで。ワークシート全体だけでなく、選択した範囲のセルから値を自動フィルター処理する方法を学習します。

Excel の VBA で特定の値と等しくないオートフィルター値 (クイック ビュー)

Sub Autofilter_Values_from_Whole_Worksheet()

Source_Worksheet = "Sheet1"
Destination_Worksheet = "Sheet2"

Dim Filtered_Columns() As Variant
Filtered_Columns = Array(1, 3)

Value_Column = 3
Value = "F"

Row_Count = 1
Column_Count = 1

For i = 1 To Worksheets(Source_Worksheet).UsedRange.Rows.Count
    If Worksheets(Source_Worksheet).UsedRange.Cells(i, Value_Column) <> Value Then
        For j = LBound(Filtered_Columns) To UBound(Filtered_Columns)
            Worksheets(Destination_Worksheet).Cells(Row_Count, Column_Count) = Worksheets(Source_Worksheet).UsedRange.Cells(i, Filtered_Columns(j))
            Column_Count = Column_Count + 1
        Next j
        Row_Count = Row_Count + 1
        Column_Count = 1
    End If
Next i

End Sub

Excel で VBA を使用して特定の値と等しくない値をオートフィルターする方法

Excel で VBA を使用して特定の値と等しくない値をオートフィルター処理する 2 つの適切な方法

遅滞なく、今日の主な議論に移りましょう。まず、ワークシート全体から値を自動フィルター処理し、次にワークシートの特定の範囲から値を自動フィルター処理します。

1.ワークシート全体の特定の値と等しくない値をオートフィルター

まず、Excel VBA を使用して、ワークシート全体から特定の値と等しくない値をオートフィルター処理する方法を学びます。 .

ここに Sheet1 という名前のワークシートがあります 何人かの生徒の名前が含まれています 、彼らのマーク 試験での成績 .データセットはセル A1 から始まります .

Excel で VBA を使用して特定の値と等しくない値をオートフィルターする方法

私たちの目的は、成績が Fに等しくない学生を自動フィルタリングすることです Sheet2 という名前のワークシートで .

⧪ ステップ 1:入力の挿入

まず、入力をコードに挿入する必要があります。これには、元のワークシート (Sheet1) の名前が含まれます 、宛先ワークシート (Sheet2)フィルタリングされる列 (1、3)特定の値を持つ列 (3) 、および特定の値 (F) .

Source_Worksheet = "Sheet1"
Destination_Worksheet = "Sheet2"

Dim Filtered_Columns() As Variant
Filtered_Columns = Array(1, 3)

Value_Column = 3
Value = "F"

⧪ ステップ 2:For ループによる値の自動フィルタリング

次に、for ループ を反復処理して、ソース ワークシートから宛先ワークシートへの値を自動フィルター処理します。 .

Row_Count = 1
Column_Count = 1

For i = 1 To Worksheets(Source_Worksheet).UsedRange.Rows.Count
    If Worksheets(Source_Worksheet).UsedRange.Cells(i, Value_Column) <> Value Then
        For j = LBound(Filtered_Columns) To UBound(Filtered_Columns)
            Worksheets(Destination_Worksheet).Cells(Row_Count, Column_Count) = Worksheets(Source_Worksheet).UsedRange.Cells(i, Filtered_Columns(j))
            Column_Count = Column_Count + 1
        Next j
        Row_Count = Row_Count + 1
        Column_Count = 1
    End If
Next i

したがって、完全な VBA コードは次のようになります:

⧭ VBA コード:

Sub Autofilter_Values_from_Whole_Worksheet()

Source_Worksheet = "Sheet1"
Destination_Worksheet = "Sheet2"

Dim Filtered_Columns() As Variant
Filtered_Columns = Array(1, 3)

Value_Column = 3
Value = "F"

Row_Count = 1
Column_Count = 1

For i = 1 To Worksheets(Source_Worksheet).UsedRange.Rows.Count
    If Worksheets(Source_Worksheet).UsedRange.Cells(i, Value_Column) <> Value Then
        For j = LBound(Filtered_Columns) To UBound(Filtered_Columns)
            Worksheets(Destination_Worksheet).Cells(Row_Count, Column_Count) = Worksheets(Source_Worksheet).UsedRange.Cells(i, Filtered_Columns(j))
            Column_Count = Column_Count + 1
        Next j
        Row_Count = Row_Count + 1
        Column_Count = 1
    End If
Next i

End Sub

<強い> Excel で VBA を使用して特定の値と等しくない値をオートフィルターする方法

⧭ 出力:

必要に応じて入力を変更し、コードを実行します (最初に Sheet2 という名前の新しいワークシートを作成します 、または宛先ワークシートとして何か 、次にコードを実行します。そうしないと、エラーが表示されます。)

データセットの特定の列を取得します (列 1 そして3 この例では) 特定の値 (F) と等しくない値のみを含む宛先ワークシートに自動フィルター処理されます この例では)

Excel で VBA を使用して特定の値と等しくない値をオートフィルターする方法

続きを読む: Excel の同じフィールドに複数の条件を指定して AutoFilter する VBA (4 つの方法)

2. Excel VBA を使用して、特定の範囲のセルの特定の値と等しくない値を自動フィルター処理する

Excel VBA のワークシート全体から特定の値と等しくない値をオートフィルター処理することを学びました .

ここで、特定の範囲から値をオートフィルター処理する方法を学習します。

ここに Sheet3 という名前のワークシートがあります 何人かの生徒の名前が含まれています 、彼らのマーク 試験での成績 .しかし今回のデータセットはセル B3 から始まります セル D15 まで .

Excel で VBA を使用して特定の値と等しくない値をオートフィルターする方法

今回の目的は、成績が F に等しくない学生を自動フィルタリングすることです 同じワークシートのセル F3 .

⧪ ステップ 1:入力の挿入

まず、入力をコードに挿入する必要があります。今回は、元のワークシート (Sheet3) の名前が含まれます 、宛先ワークシート (Sheet3)宛先セル (F3 )、フィルタリングされる列 (1、3)特定の値を持つ列 (3) 、および特定の値 (F) .

Source_Worksheet = "Sheet3"
Source_Range = "B3:D15"

Destination_Worksheet = "Sheet3"
Destination_Cell = "F3"

Dim Filtered_Columns() As Variant
Filtered_Columns = Array(1, 3)

Value_Column = 3
Value = "F"

⧪ ステップ 2:For ループを使用した値の自動フィルタリング

次に、for ループ を反復して値を自動フィルタリングします。 .

Row_Count = 1
Column_Count = 1

For i = 1 To Worksheets(Source_Worksheet).Range(Source_Range).Rows.Count
    If Worksheets(Source_Worksheet).Range(Source_Range).Cells(i, Value_Column) <> Value Then
        For j = LBound(Filtered_Columns) To UBound(Filtered_Columns)
            Worksheets(Destination_Worksheet).Range(Destination_Cell).Cells(Row_Count, Column_Count) = Worksheets(Source_Worksheet).Range(Source_Range).Cells(i, Filtered_Columns(j))
            Column_Count = Column_Count + 1
        Next j
        Row_Count = Row_Count + 1
        Column_Count = 1
    End If
Next i

したがって、完全な VBA コードは次のようになります:

⧭ VBA コード:

Sub Autofilter_Values_from_Specific_Range()

Source_Worksheet = "Sheet3"
Source_Range = "B3:D15"

Destination_Worksheet = "Sheet3"
Destination_Cell = "F3"

Dim Filtered_Columns() As Variant
Filtered_Columns = Array(1, 3)

Value_Column = 3
Value = "F"

Row_Count = 1
Column_Count = 1

For i = 1 To Worksheets(Source_Worksheet).Range(Source_Range).Rows.Count
    If Worksheets(Source_Worksheet).Range(Source_Range).Cells(i, Value_Column) <> Value Then
        For j = LBound(Filtered_Columns) To UBound(Filtered_Columns)
            Worksheets(Destination_Worksheet).Range(Destination_Cell).Cells(Row_Count, Column_Count) = Worksheets(Source_Worksheet).Range(Source_Range).Cells(i, Filtered_Columns(j))
            Column_Count = Column_Count + 1
        Next j
        Row_Count = Row_Count + 1
        Column_Count = 1
    End If
Next i

End Sub

Excel で VBA を使用して特定の値と等しくない値をオートフィルターする方法

⧭ 出力:

入力を変更した後にコードを実行します (宛先ワークシートを作成することを忘れないでください) そうしないと、エラーが発生します。)

データセットの特定の列を取得します (列 1 そして3 この例では) 目的のセルに自動フィルター処理されます (F3) この例では) 特定の値 (F) と等しくない値のみを含む宛先ワークシートの この例では)

Excel で VBA を使用して特定の値と等しくない値をオートフィルターする方法

続きを読む: [修正]:Range クラスの AutoFilter メソッドが失敗しました (5 つの解決策)

覚えておくべきこと

コードを実行して値を新しいワークシートに自動フィルター処理する前に、そのワークシートを作成します。そうしないと、エラーが発生します。

また、ここでは UsedRange を使用しています VBA のプロパティ ワークシート全体から値をオートフィルターします。クリックして詳細を確認してください。

結論

VBA を使用して、特定の値と等しくない値をオートフィルター処理する方法を次に示します。 エクセルで。何か質問がありますか?お気軽にお問い合わせください。私たちのサイト ExcelDemy にアクセスすることを忘れないでください より多くの投稿と更新情報をご覧ください。

関連記事

  • オートフィルターがオンになっているかどうかを確認する Excel VBA (4 つの簡単な方法)
  • VBA オートフィルター:最小から最大への並べ替え (3 つの方法)
  • Excel VBA で表示されている行をオートフィルターしてコピーする方法
  • Excel VBA:オートフィルターが存在する場合は削除する (7 つの方法)

  1. Excel で特定の値のセルをクリアする方法 (2 つの方法)

    Excel での作業中に、特定の値のセルをクリアする必要がある場合があります。これは、単一のセルまたは複数のセルのいずれかです。 同じセル値で。大規模なデータ セットで作業しているときに、セルを 1 つずつ調べて特定の値をクリアするのは、時間がかかり面倒です。そこで、この記事では、Excel で特定の値を持つセルをクリアする方法を紹介します。 . 無料の Excel をダウンロードできます ここでワークブックを作成し、自分で練習してください。 Excel で特定の値を持つセルをクリアする 2 つの便利な方法 この記事では、Excel で特定の値を持つセルをクリアする 2 つの簡単で便利な方法

  2. 特定の値を超えないように Excel 数式を使用する方法

    このチュートリアルでは、Excel の数式を使用して特定の値を超えないようにする方法を示します。大量のデータを扱う場合、データが超えないように一定の範囲を設定することが非常に必要になることがあります。企業や教育機関は、卓越性レベルや利益率を測定するために、この種の基準を設定しています。この記事では、データ検証などのさまざまな数式を使用します ,最大 、MIN 、RANDBETWEEN 、および IF 関数を使用して、超えてはならない値を設定します。 ここから練習用ワークブックをダウンロードできます。 特定の値を超えないように Excel の数式を使用する 6 つの簡単な方法 簡単に理解で