条件を指定した置換


すみません、ちょっとタイトルが分かりにくいですかね。つまり、こういう事例です。

こんなデータが大量にあったとします。この中から「名前」が"田中"の「商品」"りんご"だけ、全部"林檎"に置換したいんです。こういうケース、実務ではけっこう多いです。普通に置換機能を使ったら、すべての"りんご"が置換の対象になってしまいます。

さあ、どうしましょう。

何も難しく考えることはありません。ある意味これ、Tipsとして取り上げるほどではないです。でも、知らない方が実に多い。簡単ですよ。次のように操作すればいいんです。

まず、B列を"田中"で絞り込みます。もちろん使うのはオートフィルタです。

次に、C列全体を選択してから、"りんご"を"林檎"に[すべて置換]します。

これで終わりです。オートフィルタで絞り込んだ結果に対して置換すると、絞り込まれた結果だけが置換対象になります。

オートフィルタを解除してみれば、ご覧の通り。「名前」が"田中"ではない"りんご"は置換されていません。

参考までに、これマクロでやるなら、次のようになります。

Sub Sumple1()
    Range("A2").AutoFilter 2, "田中"
    Range("C:C").Replace "りんご", "林檎"
    Range("A2").AutoFilter
End Sub

以下、余談です。

実はこれ、VBAのセミナーを受講した方から直接質問された内容です。私のVBAセミナーでは、VBA以外の質問も大歓迎ですから、こうした機能の質問も多いです。正直言って、私これができるのをそれまで知りませんでした。でも、オートフィルタで絞り込んだ結果だけ、文字の色など書式を変更できるのは知っていました。なので「いけんじゃね?」と思って、その場でやってみたわけです。やってみたらできました。そう!このやってみるというのが重要なんです。質問した方は、もちろんオートフィルタを知っていました。普通に置換する方法もしっていました。だったら、試しにやってみればいいんです。で、うまくいかなかったら、別の方法を考えればいいんです。

過去20年間、3万人以上にExcelを教えてきましたが、Excelを使いこなせる人と、悩んでいる人の違いは、実際にやってみるかどうかです。

やってみる → うまくいった → なるほどこうやればできるのかという知識と経験が増える

やってみる → うまくいかない → なるほどこれはできないのかという知識と経験が増える

どっちにしろ、やってみればExcelの知識と経験が増えるんです。これを、やらないで「どうしたらいいでしょう?」とか「どうなりますか?」と質問すると、たとえ答えを教えてもらったとしても、それは質問者の経験にはなりません。何はともあれやってみるという意識を持ってください。