ExcelVBA検索
通常のワークシートで検索を使用する場合、キーボードショートカットのCTRL + Fを押して、検索する必要のあるデータを入力します。必要な値がない場合は、次の一致に進みます。そのような一致が多数ある場合は、面倒な作業ですが、 VBAでFINDを使用すると、タスクが実行され、完全に一致します。3つの引数が必要です。1つは、何を見つけるか、どこを見つけるか、どこを見るかです。
VBAに移行してマクロで検索関数の使用を開始する前に、まずExcelの検索関数とは何かを学ぶ必要があります。編集グループの下の[ホーム]タブの通常のExcelでは、セル範囲またはワークシート全体で文字列または値を検索するために使用される検索関数を見つけることができます。
これをクリックすると、2つのオプションが表示されます。
1つは見つけるのが簡単です、
別の機能を開くオプションのモードもあることがわかります。
これは、Find What、Within、Search、およびlookinの4つの制約を使用して検索アルゴリズムを実行します。
Excelの2番目のオプションは、文字列を見つけたときに使用される検索と置換ですが、他の値で何を置き換えるかです。
関数構文の検索
基本的なExcelでの検索とは何かを上で学びました。VBAでは手動でコードを記述しますが、機能は通常のExcelと同じです。まず、構文を見てみましょう。
Expression.Find(What、lookin、…。)
探している値がExcel関数で見つかった場合は、値があるセルを返します。値が見つからない場合は、関数のオブジェクトは何にも設定されません。
マクロの式は、範囲1や範囲2など、定義された範囲です。特定の値を検索するためのキーワードは何ですか。Lookinは、コメント、数式、文字列など、検索しようとしているもののキーワードです。同様に、Find関数にはオプションの他の制約があります。必須のフィールドは、検索しようとしている値だけです。
基本的に、VBAは、Excelに必要な引数が1つあることを検出します。これは、検索する値です。残りの制約はオプションであり、find関数には多くの制約があります。検索機能は、検索機能が優れているものと似ています。
検索機能のパラメータはセルの範囲です。どの範囲で値を見つけたいかなど。数列または数セル、あるいはワークシート全体にすることができます。
例
このVBAFIND関数Excelテンプレートはここからダウンロードできます– VBAFIND関数Excelテンプレート例1
データの値が次のようになっているとします
同じデータから「アラン」を見つけようとします。
- VBAコードを作成するには、VBAコードを作成できるようにするために、Excelで[開発者]タブを有効にする必要があります。
- 以下に示すように、次のコードを記述してコードの記述を開始します。
文字列としての薄暗いFindSA
範囲としてのDimRng
FindS = InputBox(「検索する値を入力してください」)
シート付き(「Sheet1」)。範囲(「A:A」)
- サンプルは、サブに付けられた関数名です。
- 検索は、入力するユーザーに検索させる文字列です。
- Rngは、範囲に対して取得した変数です。
- 次に、下のスクリーンショットのような値を入力するようにユーザーに求めます。
- 次に、モジュールでfind関数を定義します。
- この関数は、指定された範囲でユーザーが入力した値を検索します。
- 次に、次の引数で関数を閉じます。
- ここで、最初にコードを実行すると、ユーザーによる値の入力を求められます。
- コードが完了すると、データが見つかった場所にセルが返されます。
例2
上記の例では、4つの一意の名前がありましたが、以下のデータを検討するなど、データに複数の名前がある場合はどうなりますか?
上記のデータでは、Aranという名前が2回繰り返されていることがわかります。Excelが名前Aranを見つけなければならない場合、セルA2でそれを見つけて停止しますが、セルA6のA2と同様の別の値があります。その値を取得する方法は?ここに、Find(What、After)の構文が役立ちます。
Afterは、データを検索する参照の後にセルを定義します。
上記のデータのコードを書いてみましょう。
- オプションから[開発者]タブを有効にしてから、ExcelでリボンをカスタマイズしてVBAでコードを記述できるようにすることを常に忘れないでください。
- VBAでは、コードを記述するモジュールであるMicrosoftExcelオブジェクトを取得します。
- 以前はシート1で作業していましたが、現在はシート2で作業しているため、別のモジュール用にシート2を選択すると、空白のページが表示されます。
- ここで、最初に関数をSUB Sample2()として定義し、Enterキーを押して、コードの記述を開始します。
- これで関数を定義したので、変数を定義する主要部分に入り始めます。
- Find変数に必要なものを定義します。
- この例ではシート2である、作業中のシートを選択します。
- ここで、ユーザーがA2セルの後に入力したテキストを検索するので、検索関数を次のように定義します。
- ここで、with条件とif条件を終了してコードを閉じます。
上記のコードは、セルA2の後の文字列を検索し、見つかった場所にセルを返します。
覚えておくべきこと
- まず最初に、VBAを使用するために[開発者]タブを有効にする必要があります。
- 私たちが見つける必要がある具体的な価値は何ですか?
- 値が見つからない場合、関数のオブジェクトは何にも設定されません。