ExcelVBA – 文字列比較!
Updated:
今日は、ExcelのVBAについてです。
よく仕事なんかでExcelを使って複雑な表を作ったりすると思います。
ある程度のことなら、Excelの関数を駆使すればできます。
しかし、関数だけではチョット難しいことも多々あると思います。
そんな時、VBAを使って処理をさせたりするんですが、そこで僕が「文字列を比較する」際によく利用する小技です。
具体的には以下のような例。 「A 100a」(全部全角文字(スペースは全角2個)) と 「A 100a」(全部半角文字(スペースは半角1個)) を同じものとして扱いたい。
同じExcelシートを複数の人が使用する場合、同じコード類でも人によって微妙に入力が違ってしまうことがあります。
全角文字を半角に、全角・半角スペースを削除することによって実現できます。
実際には以下のような記述。
1.StrConv(Replace(Replace(“A 100a”, “ “, “”), “ ”, “”), vbNarrow) = “A100a”
2.StrConv(Replace(Replace(“A 100a”, “ “, “”), “ ”, “”), vbNarrow) = “A100a”
1、2ともに結果は”A100a”(全部半角)となります。
スペースを削除するにはTrim関数もありますが、これでは、
3.StrConv(Trim(“A 100a”), vbNarrow) = “A 100a”
4.StrConv(Replace(Replace(“A 100a”, “ “, “”), “ ”, “”), vbNarrow) = “A 100a”
となります。 3は文字列途中の半角空白は2個、4は文字列途中の半角空白は1個です。
Trim関数は文字列の前後の空白を削除するものなので、文字列の途中にある空白は削除できません。
Trim関数も使用することはありますが、今回のような文字列比較の時なんかはよくこのReplace関数を使用しています。
※ちなみに、今回使用したExcelはExcel2000でした。
Excelの小技も今後記録していこうと思った今日この頃でした。
じゃ、また。
Comments