エクセルで*を置換するのがむつかしかった

エクセルは長年使っているので、おおよそのことは知っているつもりなのですが、思いがけずわからないことが出てくるものです。

今回も、やりたかったことは「置換」なのですが、思いのほかはまってしまいました。
備忘録として記録いたします。

今回の現象

以下のような、計算式(*2)を置換で変換(*3に変換)しようと思いました。

実際にやってみるとこうなりました。

=A1が消えて、*3だけになりました。
当然計算式が壊れた状態です。

【疑問】なんで「=A1」が消えてしまったのか?

*2を置換しただけなのに、ほかの部分まで置換されてしまいました。
なんでだろうと思って調べてみたら、以下のような理由でした。

  • エクセルの置換で「*」を入れるとワイルドカード扱いになる

つまり、「*2」を指定すると、2の前全部を置換という意味になります。
なので、=A1ごと置換されてしまったのです。

理屈はわかりましたが、全く知りませんでした。

ではどうすればよいのでしょうか?

「*」の前に~(チルダ)をつけて検索する

*を置換する場合は、~をつけると*だけを置換できます。
具体的には以下のようにします。

実際にやってみると正しく置換できました

やりたいことができました。

【疑問】~をつけるとなぜ置換できたのか?

置換で*は、エクセルではワイルドカードになります。
つまり文字でなく、記号としてエクセルが認識しています。

~(チルダ)をつけると、強制的に文字として認識します。
ちなみに「次の文字を強制的に文字として扱う」という意味になります。

例えば「~あ」と「あ」はどちらも同じ意味になります。
以下のものを「~あ」で置換してみると、「あ」だけ変換され~は変換されませんでした。

何でわざわざ置換でやろうとしたのか?

賢い方なら疑問に思われたと思います。
なんでわざわざ置換で*を変換しようとしたのか?
そもそも置換せず、手動で書き換えれば早いじゃないのか?

まったくもってその通りなのですが、今回は特殊な事情がありました。

  • 計算式を書き換える箇所が100か所ほどあった

エクセルでの計算式のシートで、計算式の間違いを修正する必要があったのですが、百か所ほどありました。
手で1個ずつ直すのは大変だったので、置換で一括書き換えをしようと思ったのです。

数か所だったら、今回の疑問は沸きませんでした。

ちなみに置換後に~をつけてやっみると次のようになりました。

置換前に~(チルダ)をつけると*を置換できることがわかりました。
ならば、置換後にも~をつければいいのではないか?
と思い試してみました。

結果はエラーとなりうまく置換できませんでした。
置換の際には、置換前にだけ~(チルダ)を指定するもののようです。

まだまだ知らないことはたくさんあります

エクセルは使い始めてかなり年数がたちましたが、今回まだまだ知らないことがあるものだと思いました。
知っているつもりになっていると、そこで成長が止まるものです。

知らないことを見つけたら、知ることでさらなる成長ができるものです。

今回のレポートは以上です。
読んでいただいてありがとうございました。


ホームページに関するお悩み事やご相談事がございましたら私どもまでご連絡ください。 鋭意ご対応申し上げます。
ホームページのご提案もさせていただいております