文字列を検索するマクロの作り方 − GoGoマクロ!のWebサイト

HOME > マクロの作り方 > 検索する


文字列を検索するマクロの作り方


検索マクロの作り方

Excelの検索機能だけではどうにもうまくできない!とお困りの方のために、 今回は内容に少々含みを持たせつつ、色々なバリエーションを交えた文字列の 検索マクロというものをVBAで作っていきたいと思います。


さて、この文字列の検索マクロというものを作るには、基本的には次の3通り の方法が考えられます。

(1)Find(Excelの検索機能)を活用する方法
(2)ループで回し、その中のIF文で探し出す方法
(3)AutoFilter(Excelのオートフィルタ機能)を活用する方法


今日はまず手始めに、この内の「(1)Findを活用する方法」というもので 検索マクロを作っていきます。


【今日の講座】

1)
まずはじめに、いつものようにマクロの記録を使って簡単なプログラムを
作ります。
――――――――――――――――――――――――――――+
1.エクセルを起動させます。(空のエクセルを立ち上げてください)

2.まず、マクロの記録を開始します。
 [ツール(T)] → [マクロ(M)] → [●新しいマクロの記録(R)...]
 → マクロの記録画面が出るのでそのまま[OK]をクリック。

3.次に、エクセルの検索機能を使い下記のように操作します。
 [編集(E)] → [検索(F)...] → [検索と置換]画面が出るので
 検索する文字列に abc と入力して、[次を検索(F)]ボタンをクリック
 →[検索条件に一致するデータは・・・]という警告メッセージが出る
 のでOKをクリックし、[検索と置換]画面の[閉じる]ボタンをクリック
 して検索を終了します。

4.終わったら、
 [ツール(T)] → [マクロ(M)] → [■記録終了(R)]とやって、マクロの記録
 を終了させます。(小っさな画面の■をクリックしても同じです)
――――――――――――――――――――――――――――+



ここまでは、ただ単にExcelの検索機能(検索ワードは abc )をマクロの記録 で記録しただけです。




2)
では、いま作ったプログラムの中身をのぞいてみましょう。
――――――――――――――――――――――――――――+
1.まず、いつもの様にプログラム用の画面を表示させます。
 [ツール(T)] → [マクロ(M)] → [Visual Basic Editor(V)]

2.この画面の左上半分の[+標準モジュール]という所の+の部分をクリック
 すると、そのすぐ下に[Module1]と表示されるので、その[Module1]をダブル
 クリックします。
――――――――――――――――――――――――――――+


++++++++++++++++++++++++++++―
Sub Macro1()
'
  Cells.Find(What:="abc", After:=ActiveCell,  ・・・(省略)
    xlPart, SearchOrder:=xlByRows, SearchDi ・・・
    , MatchByte:=False, SearchFormat:=False).Activate
End Sub
++++++++++++++++++++++++++++―


これは、エクセルの検索機能を単純にマクロの記録で記録させた結果です。 (長い行の右方は省略して書いています。)

このプログラムを見ると、結構な難しい(さっぱり訳の分からない)内容が 書かれていますが、例のごとくこれを理解する必要はまったくありませんので 心配はいりません。(私自身もよく分かりませんので。。。)

で、この中で必要なのはたった1箇所、「Cells.Find(What:="abc",・・・」 という行の"abc"という部分だけです。ここでは、それだけちょっと覚えてお いてください。



3)
それでは、最初にちょっとこのマクロを実行してみます。
――――――――――――――――――――――――――――+
1.エクセルの画面に戻って、

2.実行する前にまず、以下のテキスト(4行)をコピーして、セルA1の位置
 からそのまま貼り付けてください。(セルA4が vwxyz となる様にです。)

abcdefg
hijklmn
opqrstu
vwxyz


3.同様に、以下のテキスト(4行)をコピーして、今度はセルB1の位置
 からそのまま貼り付けてください。

あいうえお
かきくけこ
さしすせそ
たちつてと


4.では、実行します。
 [ツール(T)] → [マクロ(M)] → [マクロ(M)...] → マクロ画面が出るので
 そのまま(「Macro1」の方を)[実行]をクリック。
――――――――――――――――――――――――――――+


実行した結果、「abc」という文字列が含まれているA1のセル位置にカーソル が移動すればOKです。(マクロで正しく「abc」という文字列の検索ができ たということになります。)



4)
それでは、ちょっとこのプログラムを修正します。
――――――――――――――――――――――――――――+
1.プログラムの画面に戻って(タスクバーで)

2.プログラム最初の行
  Cells.Find(What:="abc",・・・
 と書いてある行を、
  Cells.Find(What:="きく",・・・
 に修正します。
 ("abc"を日本語の"きく"に修正するだけです。)
――――――――――――――――――――――――――――+


修正した後のプログラムはつぎの様になります。


++++++++++++++++++++++++++++―
Sub Macro1()
'
  Cells.Find(What:="きく", After:=ActiveCell, ・・・(省略)
    xlPart, SearchOrder:=xlByRows, SearchDire ・・・
    , MatchByte:=False, SearchFormat:=False).Activate
End Sub
++++++++++++++++++++++++++++―


たったこれだけで、今度は「きく」という文字列を検索するマクロが完成した ことになるわけです。



5)
それでは、確認のため再び実行してみましょう。
――――――――――――――――――――――――――――+
1.エクセルの画面に戻って、

2.そのまま、実行します。
 [ツール(T)] → [マクロ(M)] → [マクロ(M)...] → マクロ画面が出るので
 そのまま(「Macro1」の方を)[実行]をクリック。
――――――――――――――――――――――――――――+


実行した結果、今度は「きく」という文字列が含まれているB2のセル位置に カーソルが移動すればOKということになります。


今回はこれで終了です。
今回作ったマクロはごく単純な話ではありましたが、なんとなくこれを応用 していければ色んな検索ができそうかな!?という感じにはなってきたこと と思います。


検索数をカウントするマクロの作り方 >>



 
「その面倒なエクセル操作、いつまで続けますか?」


このサイトは、10年間(2004年〜)に渡って初心者にマクロの作り方を教えてきた無料メールマガジンを 中心としたマクロ講座「Go!Go! エクセルマクロをはじめよう!」の公式Webサイトです。
メインとなるメールマガジンは、現在読者数は随時8千人超、まぐまぐからの発行でこの分野では極まれな ”殿堂入り”も果す人気を誇り、安心で確かな情報発信を信条としています。
5百人以上のプログラマーを育ててきたこの道25年の ベテランSEが 教える、ちょっと他にはない特徴的な教え方 をしていますので、マクロが「まるで未経験」という方は元より、 過去に経験した他の勉強法では「さっぱりダメだった・・」、という方にもこの勉強法はおススメです。

▼メルマガ マクロ講座の登録はこちら((無料))

Go!Go! エクセルマクロをはじめよう! (マガジンID:0000135169)   まぐまぐ
メルマガ登録
  メールアドレス:

 

かんたん「マクロ作りの手順」を詳しく解説します !!

まぐまぐ殿堂入り
読者8000人突破しました!
まぐまぐ殿堂入り

次号は、↓↓ 今すぐ 無料登録

メールアドレス:

Powered by
まぐまぐ