Excel(エクセル)マクロFindNextメソッド
皆さんExcelのマクロで特定の値を検索し抽出する方法をご存じでしょうか?マクロで特定の値を検索し抽出するためにはFindNextメソッドを使用します。
今回の記事では以下のような表からサンプルが「A」となっている値を抽出する方法をご紹介します。
Excel(エクセル)FindNext でできるすごいこと
では、早速ですがExcelのマクロで検索と抽出を行う方法をご紹介していきます。まず、マクロを使用するためには「開発」タブの「Visual Basic」を選択します。
これでマクロを入力する画面を開くことができます。
開発タブがない方は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番目のシートに抽出した結果が表示されます。
これでマクロを使用し検索と抽出を行う方法をご紹介しました。この機能を使用すれば表などから特定の値のみを抽出し別の表を作成することも簡単にできます。ぜひ興味があれば調べてみてください。
Excelの操作方法は実際に手を動かし、身につけていきましょう
今の時代、様々な仕事でExcelを使用することがあるでしょう。今回はExcelのマクロで検索と抽出する方法についてご紹介しました。このような機能を使いこなすことができれば仕事にも役に立つので、実際に手を動かし、覚えていきましょう。
WordやExcelなどのOfficeツールでは便利なショートカットキーなどがたくさんあるのでよく使う作業に関してはショートカットキーを調べてみるのも効率よく仕事を進める上で大切なことなのでこれから実践してみましょう。
コメント