黙々とC#

"In a mad world of VBA, only the mad are sane" 『VBAという名の狂った世界で狂っているというのなら私の気は確かだ』

連続検索

本記事は、Excel C# Script入門講座の1記事です。

検索

シート内で文字列を検索するは、下記記事で解説したようにRangeオブジェクトのFindメソッドを使用します。

mokumokucsharp.hateblo.jp

連続して検索する(検索条件に一致する箇所を次々に見つけたい)場合には、Findメソッドを用いた後、FindNextメソッドを使用します。

FindNextメソッドは、Findメソッド使用時の検索条件はそのままに前方向に検索を行います。

なお、FindPreviousメソッドを用いると、後ろ方向に検索を行います。

FindNextメソッドの構文

(Rangeオブジェクト).FindNext(After)

FindNextメソッドの引数

引数名 必須 / オプション 内容
After 省略可能 検索を開始する1つ前のセルを指定します。

サンプルコード

以下の例では、セル範囲 A1:A500 で、値に 2 が含まれているセルを検索し、その値を 5 に変更します。

var range = Excel.Worksheets(1).Range("a1:a500");
var hitCell = range.Find(2, LookIn:-4163);
if (hitCell != null)
{
    var firstAddress = hitCell.Address;
    do
    {
         hitCell.Value = 5;
         hitCell = range.FindNext(hitCell);
    }
    while (hitCell != null && hitCell.Address == firstAddress)
}