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

Excel で高度なフィルタを使用してデータを別のシートにコピーする VBA

複数の Excel シートを扱っている場合、読みやすくするために特定の条件で、あるスプレッドシートから別のスプレッドシートにデータをコピーする必要がある場合があります。 VBA の実装 は、Excel で操作を実行するための最も効果的、迅速、かつ安全な方法です。この記事では、VBA マクロを使用して、Excel の高度なフィルターを使用して別のシートにデータをコピーする方法を紹介します。

ワークブックをダウンロード

ここから無料の練習用 Excel ワークブックをダウンロードできます。

VBA を使用して Excel の Advanced Filer でデータを別のシートにコピーする 3 つの方法

次のデータセットを見てください。 Original という名前の Excel ワークシートがあります .このシートは、B4 から E12 の範囲のデータで構成されています .その範囲も重複した値で構成されています。範囲 G4 から H5 基準を保持しています .やりたいことは、範囲 B5:E12 からデータをコピーすることです 、ジョンのとき 名前から コラム マークがあります 80未満 (セル G4:H5 の基準 )、高度なフィルタを使用して、これらの特定のデータを他のシートに貼り付けます

Excel で高度なフィルタを使用してデータを別のシートにコピーする VBA

ハードコードされたマクロを挿入してデータをコピーする方法を見ていきます 、選択によってフィルタを進める方法 マクロを記録してシート間でデータを転送する方法 .上記のデータセットは、前述のすべてのメソッドを実行する例になります。

1. VBA コードを埋め込み、Excel の高度なフィルターを使用してデータを別のシートにコピーする

ここでは、VBA について学習します。 コード データのみをコピー オリジナル シート ジョンズ マークスが 80 未満の場合 別のという名前のシートに ターゲット 高度なフィルターで。

手順:

  • 最初に Alt + F11 を押します キーボードで、またはタブ Developer -> Visual Basic に移動します Visual Basic Editor を開く .

Excel で高度なフィルタを使用してデータを別のシートにコピーする VBA

  • 次に、ポップアップ コード ウィンドウで、メニュー バーから [挿入] -> [モジュール] をクリックします。 .

Excel で高度なフィルタを使用してデータを別のシートにコピーする VBA

  • 次に、次のコードをコピーしてコード ウィンドウに貼り付けます。
Sub AdvancedFilterCode()
Dim iRange As Range
Dim iCriteria As Range
'set the range to filter and the criteria range
Set iRange = Sheets("Original").Range("B4:E12")
Set iCriteria = Sheets("Original").Range("G4:H5")
'copy the filtered data to the destination
iRange.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=iCriteria, CopyToRange:=Sheets("Target").Range("B4:E4"), Unique:=True
End Sub

コードを実行する準備ができました。

Excel で高度なフィルタを使用してデータを別のシートにコピーする VBA

  • では、 F5 を押してください キーボードまたはメニュー バーから Run -> Run Sub/UserForm を選択します . スモール ラン アイコンをクリックすることもできます。 サブメニュー バーでマクロを実行します。

Excel で高度なフィルタを使用してデータを別のシートにコピーする VBA

コードの実行後、下の画像を見て結果を確認してください。

Excel で高度なフィルタを使用してデータを別のシートにコピーする VBA

その結果、John's Marks が 80 未満のデータのみが コピー ターゲット シート オリジナルから シート VBA の高度なフィルタを使用 .

続きを読む: 高度なフィルターを使用してデータを Excel の別のシートにコピーする方法

2. VBA マクロを実装して、ユーザー定義の選択によってデータをフィルター処理する

オリジナルからデータのみをフィルタリングする方法を学習します。 シート John's Marks が 80 未満の場合 Destination という名前の別の シートに ユーザーが選択した範囲から VBA の高度なフィルタを使用

手順:

  • 前と同じように、Visual Basic Editor を開きます 開発者から タブと挿入 モジュール コード ウィンドウで。
  • 次に、コード ウィンドウに次のコードをコピーして貼り付けます。
Sub AdvancedFilterBySelection()
Dim iTrgt As String
Dim iRange As Range
Dim iCriteria As Range
Dim iDestination As Range
On Error Resume Next
iTrgt = ActiveWindow.RangeSelection.Address
Set iRange = Application.InputBox("Select Range to Filter", "Excel", iTrgt, , , , , 8)
If iRange Is Nothing Then Exit Sub
Set iCriteria = Application.InputBox("Select Criteria Range", "Excel", "", , , , , 8)
If iCriteria Is Nothing Then Exit Sub
Set iDestination = Application.InputBox("Select Destination Range", "Excel", "", , , , , 8)
If iDestination Is Nothing Then Exit Sub
iRange.AdvancedFilter xlFilterCopy, iCriteria, iDestination, False
iDestination.Worksheet.Activate
iDestination.Worksheet.Columns.AutoFit
End Sub

コードを実行する準備ができました。

Excel で高度なフィルタを使用してデータを別のシートにコピーする VBA

  • さあ、走る
  • 次に、ポップアップ ボックスが表示されます。 範囲を選択 フィルタリングしたい (この場合、B4 から E12 の範囲です) ).
  • 後で、[OK] を押します .

Excel で高度なフィルタを使用してデータを別のシートにコピーする VBA

  • 次に、別のポップアップ ボックスが表示されます。今回は基準範囲を選択する必要があります データセットに保存したもの (条件の範囲は Cell G4 から H5) 私たちのデータセットのために)
  • もう一度OKを押してください .

Excel で高度なフィルタを使用してデータを別のシートにコピーする VBA

  • 最後に、別のポップアップ ボックスが表示されます。次に、宛先範囲を選択する必要があります コピーしたデータを保存する場所 .この場合、セル B2 です。 目的地で シート .
  • 次に、OK を押します .

Excel で高度なフィルタを使用してデータを別のシートにコピーする VBA

結果を見るには、下の画像を見てください。

Excel で高度なフィルタを使用してデータを別のシートにコピーする VBA

最後に、John's Marks が 80 未満のデータのみ コピー 目的地で シート オリジナルから シート VBA の高度なフィルタを使用 .

関連コンテンツ: Excel の高度なフィルターが機能しない (2 つの理由と解決策)

類似の読み物

  • 条件範囲にテキストが含まれている場合に Excel で高度なフィルターを使用する方法
  • 動的高度フィルター Excel (VBA &マクロ)
  • Excel の基準範囲を使用した高度なフィルター (18 アプリケーション)
  • Excel で複数の条件を使用した高度なフィルター (15 の適切な例)
  • Excel VBA の例:条件付きの高度なフィルターを使用する (6 つの条件)

3. VBA マクロを適用して、Excel にマクロを記録して別のシートにデータをコピーする

このセクションでは、オリジナルからデータのみを抽出するという同じ問題の解決策を知ることができます。 シート ジョンズ マークスが 80 未満の場合 Filtered という名前の別の シートに マクロの記録による VBA

手順:

  • まず、新しいワークシートを開きます (私たちの場合、それはシート Filtered です ).
  • そのシートでは、ヘッダー行のみを保存します 元のデータセットの。

Excel で高度なフィルタを使用してデータを別のシートにコピーする VBA

  • 次に、オリジナルに移動します シート . 小さなマクロ記号が表示されます シートの左下にあります。 記号をクリック マクロの記録を開始します。

Excel で高度なフィルタを使用してデータを別のシートにコピーする VBA

  • 次に、マクロの記録 ポップアップウィンドウが表示されます。 マクロ名を入力してください あなたがしたいこと。 AdvancedFilter を定義します マクロ名として .
  • 次に、マクロを保存する場所を選択します .マクロを既存のワークブックに保存したかったので、[このワークブック] を選択しました。 .
  • 後で、[OK] をクリックします .

Excel で高度なフィルタを使用してデータを別のシートにコピーする VBA

  • さて、元のに戻ります シート 開始したばかりのマクロが記録を開始したことに気付くでしょう。

Excel で高度なフィルタを使用してデータを別のシートにコピーする VBA

  • 次に、シートに移動する必要があります コピーされたデータを保持します (例:フィルタ済み シート)
  • アクティブなセルを持っている そのシートで Data -> Advanced に移動します .

Excel で高度なフィルタを使用してデータを別のシートにコピーする VBA

  • 次に、高度なフィルタ ポップアップ ボックスが表示されます。
  • まず、チェック 別の場所にコピー アクション のオプション
  • 次に、リスト範囲の横のテキスト ボックスに 、オリジナルに移動します シート 範囲を選択 フィルタリングします(このデータセットの場合、範囲は B4:E12 です) ).

Excel で高度なフィルタを使用してデータを別のシートにコピーする VBA

  • 次に、[基準の範囲] の横にあるテキスト ボックスに 、基準範囲を選択します (John's Marks は 80 未満 ) オリジナルに保存 シート (このデータセットの場合、範囲は G4:H5 です ).

Excel で高度なフィルタを使用してデータを別のシートにコピーする VBA

  • 次に、[コピー先] の横のテキスト ボックスに 、フィルタ済みに移動します シートコピーしたデータを保存するシート ヘッダー範囲を選択 (このデータセットの場合、範囲は B4:E4 です ).
  • 最後に、[OK] をクリックします。 .

Excel で高度なフィルタを使用してデータを別のシートにコピーする VBA

この手順全体で生成された結果を確認するには、下の画像を見てください。 データのみ John's Marks が 80 未満の場合 コピー フィルタ済み シート オリジナルから シート マクロの記録で .

Excel で高度なフィルタを使用してデータを別のシートにコピーする VBA

  • さて、マクロ記号をクリックします シートの左下にある マクロの記録を停止する .これで、実行するたびに上記のプロセスを実行するマクロが記録されました。

ただし、欠点があります この方法の。 オリジナルに新しいデータを追加すると シートフィルタリング済み シート データが基準を満たしていても更新されません。

新しく Filtered したい シート 元のに新しいデータを追加するときに、コードを実行することで自動的に更新されます シート .そのためには、コードを少し変更する必要があります。

必要なものを取得するためのすべての手順を以下に示します。

手順:

  • まず、タブから View -> Macros -> View Macros を選択します .

Excel で高度なフィルタを使用してデータを別のシートにコピーする VBA

  • その後、マクロ ポップアップウィンドウが表示されます。 マクロ名を選択します 録音して作成した (AdvancedFilter 私たちの場合)
  • 次に、[編集] をクリックします .

Excel で高度なフィルタを使用してデータを別のシートにコピーする VBA

  • 記録されたマクロの背後にあるコードがコード ウィンドウに表示されます (下の画像を参照)。

Excel で高度なフィルタを使用してデータを別のシートにコピーする VBA

  • さて、青いマークの部分を削除します (下の図を参照) コードから。

Excel で高度なフィルタを使用してデータを別のシートにコピーする VBA

  • その後、コードを修正 次の図に示すとおりです。

Excel で高度なフィルタを使用してデータを別のシートにコピーする VBA

  • さて、更新されたコード になります:
Sub AdvancedFilter()
Sheets("Original").Range("B4").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets("Original").Range("G4:H5"), CopyToRange:=Sheets("Filtered").Range("B4:E4"), Unique:=False
End Sub
  • 保存 このコード
  • さて、元のに戻ります シート 新しいデータを追加 基準に該当するものになります。たとえば、John の別の行を追加しました の取得 Marks が 76 の情報 マークが 80 未満の基準に該当するもの .

Excel で高度なフィルタを使用してデータを別のシートにコピーする VBA

  • 次に、実行 コードを入力し、次の画像で結果を確認してください。

Excel で高度なフィルタを使用してデータを別のシートにコピーする VBA

  • 新しくコピーされた行があります フィルタリング済み シート ジョン マーク 76 による の情報 基準を満たす (Marks<80 ).

続きを読む:Excel で一意のレコードのみに高度なフィルターを使用する方法

結論

結論として、この記事では、高度なフィルタを使用して別のシートにデータをコピーする方法に関する 3 つの異なる基準を示しました。 VBA マクロを使用して Excel で .この記事があなたにとって非常に有益であることを願っています。このトピックに関する質問はお気軽にどうぞ。

関連記事

  • 高度なフィルターを使用して Excel で空白セルを除外する方法 (3 つの簡単なトリック)
  • Excel VBA:範囲内の複数の基準を持つ高度なフィルター (5 つのメソッド)
  • Excel で一意のレコードのみに高度なフィルターを使用する方法
  • 高度なフィルターを適用して Excel の別の場所にコピーする
  • Excel の高度なフィルター:「次を含まない」を適用 (2 つの方法)
  • Excel の 1 つの列で複数の基準に基づいて高度なフィルターを適用する

  1. Excel VBA でデータ入力フォームを作成する方法 (簡単な手順)

    VBA で作業中 Excel でデータ入力フォームを作成しようとすると、ほとんどの人が問題に直面します。この記事では、データ入力フォームを作成する方法を紹介します VBA を使用して Excel で非常に便利かつ適切に . Excel VBA でデータ入力フォームを作成する 3 つの簡単な手順 ここには、ワシントン、ニューヨークという 3 つのワークシートがあります。 とカリフォルニア 名前、連絡先番号、年齢を含む と性別 銀行のこれら 3 つの支店の一部の顧客。 今日の目的は、VBA を使用してこのデータベースにデータを入力するためのフォームを作成することです . 2 つのステッ

  2. 別のシートからの Excel マッピング データ (6 つの便利な方法)

    複数のワークシートで作業することは、通常の Excel ユーザーの間で非常に一般的です。しかし、これらのワークシート間でデータをマッピングするのは、非常に時間のかかる作業です。したがって、Excel で別のシートからデータをマッピングする方法を知る必要があります。これを考慮して、別のシートからの Excel マッピング データに関する 6 つの便利な方法に関する記事を以下に示します。 ワークブックをダウンロード こちらからサンプル ファイルを入手して、自分で練習してください。 Excel で別のシートからデータをマッピングするための 6 つの便利な方法 説明のために、ここでは 2 つのデー