アプリケーションとしてのVBA
検索結果が1つだけの場合
◆検索1 検索結果が1つだけの場合
Excel の表に目的のデータがあるかチェック・検索することは良くあります。
Find を使うと簡単にできます。しかもかなり高速です。
以下の説明は、検索結果がひとつしかないと分かっている場合の例です。
Find の引数は沢山あるのですが、検索する値(What)以外は省略可能で、ほとんどの
場合で他の引数はあまり気にしなくても使えます。
詳細は Help を参照してください。
基本的な使い方は、下記のように記述します。
Dim FoundCell As Range
Set FoundCell = 検索範囲 . Find(検索する値)
Set FoundCell = Workbooks(SourceBook).Sheets(SourceSheet). _
Columns(SourceKeyColumn). _
Find(Range(DestinationKeyColumn & Format(i)))
If Not FoundCell Is Nothing Then
Range(DestinationInputColumn & Format(i)) = FoundCell.Offset( 0, 3 )
End If
Workbooks(SourceBook).Sheets(SourceSheet).Columns(SourceKeyColumn) は
1列全てを検索範囲に指定しています。
Find(xxxx)で Book と Sheet を 省略しているのは、
DestinationBook、DestinationSheet が Active になっているからです。
現在どのシートが前面に来ているかを意識してプログラミングすることを心
がけてください。
If Not FoundCell Is Nothing Then は
If FoundCell <> "" Then と同じ意味なのですが、上記のように書かないと
うまく行かない場合があります。
マニュアルにはこういう記述をしなさいと書いてあります。
FoundCell.Offset(Row,Column) は、検索されたセルから、
行方向(Row)、列方向(Column) に移動したセルを指定しています。
example3 は 2つのブック(シート)の共通の基準keyを参照して、検索結果をもう一方の
ブック(シート)に代入するサンプルアプリケーションです。
このアプリケーションは色々はケースでそのまま使えると思います。
ダウンロードして動作を確認して、実際のコードも確認してください。