mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

ExcelVBA – 文字列比較!

[ pc_tips ] [ Excel, Windows ]

こんばんは。

   今日は、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”

となります。 は文字列途中の半角空白は2個、は文字列途中の半角空白は1個です。

Trim関数は文字列の前後の空白を削除するものなので、文字列の途中にある空白は削除できません。

Trim関数も使用することはありますが、今回のような文字列比較の時なんかはよくこのReplace関数を使用しています。

※ちなみに、今回使用したExcelはExcel2000でした。

   Excelの小技も今後記録していこうと思った今日この頃でした。

   じゃ、また。

  

Comments