GoGoマクロのブログ

初心者向けマクロ講座「Go!Go!マクロ」の筆者三太郎の公式ブログです。

GoGoマクロ

エクセル仕事の自動化が誰でもできる本

「文字列操作」に強くなろう!

2020-12-22 14:44:36 | マクロ作成のコツ

「よく使う文字列操作の標準関数一覧」のいの一番に挙げてるのが、

「Trim関数」・・・文字データの目に見えない前後のゴミを取り除く

というものです。

私は言ってみればプロの本社区のプログラマーですので、特にこの関数をよく頻繁に使います。

数あるVBA標準関数の中でも、一番によくこれを使ってる言っていいかと思います。

つまり、これは具体的には

    a = ActiveCell.Value
    If a = "三太郎" Then
        MsgBox "私です!"
    End If

といったコードを書いたとします。

けど、もしここの変数の a に入る ActiveCell.Value(選択セルの値)が、

    ActiveCell.Value = "     三太郎"

だったり、

    ActiveCell.Value = "三太郎     "

だったりした場合には、このメッセージボックスの

    MsgBox "私です!"

は、表示されないことになります。特にこの下方の

    ActiveCell.Value = "三太郎     "

の方は、セルのデータとして見た場合、見た目には全くこれはわかりませんから、気づきません。

加えて、何万行もある大量データのシートの中にこれあったら、絶対にこれは(お尻に空白文字が詰まってる)気づけませんよね!?

なので、上記の様なコードを組む際に、

    a = Trim(ActiveCell.Value)
    If a = "三太郎" Then
        MsgBox "私です!"
    End If

とします。

私はプロの職業プログラマーですから、お客様の(ソフト開発依頼主の会社の)データを扱うプログラムを日夜組むのを本業の仕事としていますから、

このコードの様に、仕事で組むマクロ作りでのデータ取得時には、必ずこのTrim関数を噛ませるようしているわけです。

依頼主の会社のデータ、すなわち他人のデータ、(すなわち自分では保障できない不確かなデータ)を扱うことが多いからです。

自分や自分の会社のデータだけを主に扱う皆さんの場合は、言ってみればそれは確かなデータ(たぶん!)ですから、これは特に噛まさなくても全然大丈夫とは思いますが、

他人のデータは自分には何の保障も確証もないわけですから、言ってみればその全てが不確実なデータと言えます。

私の30有余年に渡るシステム屋の経験則から言いますとですが、「このデータには絶対まちがえはない!」そう言い切る顧客のデータほど、いい加減なものが多いです。(笑)

なので皆さんも、

例えば、普段からちょっと信用できなそうな取引先から毎月来る怪しいデータや、仲の悪い隣の部署の担当者からもらったデータやー、など扱うマクロを作る際には、

ちょっとこのひと手間を加えて、

    a = ActiveCell.Value

    a = Trim(ActiveCell.Value)

こう書く習慣を付けておくのがよいかと思います。

基本、他人は信用できません!ですから(笑) 人を見たらドロボーと思え、じゃないですけれど、

他人のデータを見たら、何かしらの不備や欠陥はあるものと思え!ですね。

特に、厳密さが売り物のプログラマー職の心得としてはそのようになりますので、自分や自分の会社の確かなデータだけ扱ってる人以外の人は、文字データの取得時になるべくこのTrim()というのを意識して入れておく、そうしてください。

Excelの場合、それはセルからのデータ取得時だけの話ですから、それさえやっておけば、あとはその変数を使い回す度に、前回も言いましたいちいち

    If a Like "*経理部*" Then

って、このようなちょっと書き間違いをし易い書き方はしなくても、

    If a = "三太郎" Then

だけで、毎回すっきり済むようなるわけです。

言うなれば、

これはプログラミングでの「リスク管理」にもなりますので、このコロナ時代もそうですが、会社でも個人でも、この様なリスクヘッジの考え方いうのは今後ますます重要になってくるかと思います。

コメント