Excel(エクセル)のマクロで検索し抽出する方法をご紹介!

Excel(エクセル)のマクロで検索し抽出する方法をご紹介! Excel(エクセル)

業務中に調べることの多い、Excel,Word,PowerPointなどのノウハウを発信していきます!

Biz Magic編集部をフォローする

Excel(エクセル)マクロFindNextメソッド

皆さんExcelのマクロで特定の値を検索し抽出する方法をご存じでしょうか?マクロで特定の値を検索し抽出するためにはFindNextメソッドを使用します。今回の記事では以下のような表からサンプルがAの値を抽出する方法をご紹介します。

サンプルがAの値を抽出する方法

Excel(エクセル)FindNext で検索と抽出を行う方法

では、早速ですがExcelのマクロで検索と抽出を行う方法をご紹介していきます。まず、マクロを使用するためには「開発」タブの「Visual Basic」を選択します。

「開発」タブの「Visual Basic」を選択

これでマクロを入力する画面を開くことができます。

マクロを入力する画面を開くことができた

開発タブがない方はExcelのオプションで開発にチェックをいれてください。

Excelのオプションで開発にチェック

これで開発タブを使用できるようになります。ではここからFind Next を使用し検索と抽出を行う方法をご紹介します。

まず、 Dimで変数を宣言し、Setで作業シートを指定します。今回は3番目と4番目のシートを指定しています。シート名で指定することも可能です。

次に4番目のシートからFindメソッドを使用しAという値を検索します。ここからが今回の記事で一番重要な点ですが、最初にヒットする”A”の位置を変数targetとして定義しておきましょう

後々loop文を終わらせるために最初の位置startも取得しておきます。loop文とFindNextで”A”の行番号を確認していきます。 あとはコピーとペーストをしていきます。変数iは貼り付け先の行番号です。最初は2で次は3と増えていきます。

targetRowをコピー先の”A”の行番号として、その隣にあるB列のデータをコピーしましょう。貼り付け先はCells(i, 1)で大丈夫です。

貼り付けたら1個下の行に移動したいのでiに1を足して行きます。

Sub 練習()

Dim pasteWs As Worksheet
Dim copyWs As Worksheet
Set pasteWs = Worksheets(3)
Set copyWs = Worksheets(4)

Dim target As Range
Set target = copyWs.Columns(1).Find("A")
Start = target.Address
i = 2
Do
 targetRow = target.Row
 copyWs.Cells(targetRow, 2).Copy
 pasteWs.Cells(i, 1).PasteSpecial
 Application.CutCopyMode = False
 i = i + 1
 Set target = copyWs.Columns(1).FindNext(target)
 If target.Address = Start Then
  Exit Do
 End If
Loop

End Sub

これを実行すると3番目のシートに抽出した結果が表示されます。

3番目のシートに抽出した結果

これでマクロを使用し検索と抽出を行う方法をご紹介しました。この機能を使用すれば表などから特定の値のみを抽出し別の表を作成することも簡単にできます。ぜひ興味があれば調べてみてください。

Excelの操作方法は実際に手を動かし、身につけていきましょう

今の時代、様々な仕事でExcelを使用することがあるでしょう。今回はExcelのマクロで検索と抽出する方法についてご紹介しました。このような機能を使いこなすことができれば仕事にも役に立つので、実際に手を動かし、覚えていきましょう。

WordやExcelなどのOfficeツールでは便利なショートカットキーなどがたくさんあるのでよく使う作業に関してはショートカットキーを調べてみるのも効率よく仕事を進める上で大切なことなのでこれから実践してみましょう。

コメント

タイトルとURLをコピーしました