【Excel】XMATCH 関数なら、255文字以上でもイケるみたいです

パソコン関連

Excel VBA を使用しているとき、WorksheetFunction で MATCH 関数を使って該当の行や列の番号を調べることがよくあります。
『*』(ワイルドカード)を使って調べる事もでき、とっても便利なのでよく使っています。
ただ先日、MATCH 関数で引っかからなかったケースがあって…。

=MATCH("あ*",A:A,0)

A列(1列目)には、確かに『あ』から始まっているセルが存在しているのに、なぜエラーになってしまったのか…?
確認したら、255文字の壁でした。
検索してほしいセルの内容が、

あああああああああああああああああああああああああああ…(合計256個以上の『あ』)

だったためです。
(実際は『あ』の羅列ではなく、セルの中に文章が入っています)
またお前か!

【Excel VBA】Sort メソッドの CustomOrder
結論を先に書きますと、Excel VBA の Sort メソッド で CustomeOrder を使う場合、カンマで繋げた文字列を一旦変数に格納してから指定すると、255文字を超える場合はエラーになってしまうので、変数に格納せずに直接指定し...

試しに

あああああああああああああああああああああああああああ…(合計255個まで減らした)

としたところ、ちゃんと行番号を返してくれました。

困りました。
どうしても行番号が知りたい…。
これは、上から順番に見ていって、合致したらその番号を返す、というのを『For ~ Next』と『Like 演算子』とかでやらなきゃいけないのか…?

と思いきや、調べてみたら『XMATCH 関数』というのがあるではありませんか!
『XMATCH 関数』は比較的最近追加された関数で、『MATCH 関数』の上位互換的な存在のようです。

MATCH(検索値, 検索範囲, 照合種類)
 ↓
XMATCH(検索値, 検索範囲, 一致モード, 検索モード)

XMATCH 関数は引数が1個増えていました。
その引数『一致モード』の中に『2 (ワイルドカードの文字と一致する)』というのがあり、これが今回役に立ったのです。
先ほど

=MATCH("あ*",A:A,0)

と書いていたものを、

=XMATCH("あ*",A:A,2)

と書き換えたところ、ちゃんと行番号を返してくれました!
わーい。
ここで

=XMATCH("あ*",A:A,0)

とした場合、やっぱりエラーになってしまったので、ワイルドカードを使うときはやっぱり3つ目の引数を『2』にしなきゃいけないようです。
『MATCH』の先頭に『X』を付けるだけの修正だとだめだ、ということですね。

4つ目の引数の『検索モード』も、一致文字を上から探していくのか下から探していくのかを指定できるようで、それも便利そうですね。
まだ使ってないけど。

『XLOOKUP 関数』はすごく便利で画期的でありがたく使わせてもらっていたんですが、『XMATCH 関数』は完全にノーマークだったので、嬉しい誤算でした。
ただ、先日の『チェックボックス』機能同様、Excel のバージョンによっては使えないこともあるので、人に渡すファイルなんかの場合は注意が必要ですね。

【Excel】新機能のチェックボックスを使ってみました
ちょっと前に、Excel でチェックボックスを付ける機能が追加されました。「そういう機能がリリースされる」っていう記事を読んで、ちょっと楽しみにしていたんですよねー。 Google スプレッドシートでは、チェックボックスの機能はすでにありま...

いやー、ちゃんと新しいことも知っておかないと損するなー、と改めて思った出来事でした。

さちこ

40代2児の母。2011年からフリーランスやってます。東京の東の方在住。
第一子が発達グレー男児で、彼が将来彼の妹に迷惑かけずに生きていけるよう、日々奮闘中です。

さちこをフォローする
パソコン関連
さちこをフォローする

コメント

タイトルとURLをコピーしました