其ノ6 規則的な文字列を規則的に加工する
ハイ、本日は、「規則的な文字列を規則的に加工する」と題しまして、文字列をいじくる練習をしましょう。
というわけで、以下からダウンロード、お願いします。
開くとこんな↓です※1。
実はもうすでに赤文字で答えを入れてあるんだけど(笑)、みなさんの方ではこんな↓ふうに※2、いったん赤いところを消して、どうやったら赤文字のように加工できるか、練習してみてください。
シートは5枚あります。 じゃあ、いっちょ、やってみますか。
れんしゅう1
というわけで、最初のレッスン。 「れんしゅう1」シート、見てください※3。
左側にある黒い文字の「記号」、「MMC13000T5」とか「MMC13001T5」とか…、これを加工して、赤い文字の状態にする、っていうのがミッションです。
さきほども言いましたが、みなさんは赤い文字の答えをいったん消して、自力でやってみてくださいね。
ハイ、では最初のミッション!
下記の記号の末尾に「N」を入れてください。
「MMC13000T5」だったら「MMC13000T5N」に、「MMC13001T5」は「MMC13001T5N」にするんですよ。
ハイ、スタート。
・
・
…できました?
ちなみに、手作業で1コ1コ「N」入れた人はいますか?
元の文字列をコピーして、1コ1コおしりに手作業で「N」入れた人※4 ※5。
個人的にはこういう人、大好きです。
ですが、今回はもう少し効率よくやってみましょう。
ハイ、課題は「末尾にNを入れる」でしたね。
なので、&でつないでやります※6 ※7。
&の使い方、其ノ3でやりましたね。
&は、2つのセル内容をくっつけるだけじゃなく、任意の文字を追加することもできるんですよ。
文字を入れたい場合は、""(ダブルクォーテーション)ではさんであげてくださいね。
あ、あと、式を入れたら、値貼りしておいてください。
じゃないと、文字列にならないので。
問題2「末尾に「-K」を入れてください」も同様です。
&でつないでやれば※8 ※9。
できました? こんな感じで次々いきますよ。
れんしゅう2
では次のシート、れんしゅう2。
今度は、「「/(スラッシュ)」をとりたい」と「「KUV」の「U」をとって「KV」にしたい」の2問です※10。
ハイ、では、やってみましょうか。
まず、スラッシュをとる方から。
はじめに、元の記号をコピーします※11 ※12。
で、今回は、其ノ5で紹介した置換って機能を使います。 置換、「ちかん」って読むんですが、これを使うと指定した文字を別の何かに置き換えることができるんです。 で、使い方はというと…、まず、対象範囲を選択してCtrl+Hを押します※13。
置換をするときは必ず範囲を選択してからにしてください。
さもないとよけいなところまで置換範囲に含まれてしまいます。
んで、「検索する文字列」に/(スラッシュ)を、「置換後の文字列」には何も入力しません※14。
そのままでOKです。
この状態で「すべて置換」を実行すると…※15。
スラッシュがなくなりました。
「9件を置換しました」とメッセージが出ましたが、ちゃんとこの「9件」がデータの個数と一致するか、確かめておいてくださいね。
ハイ、では次!
/(スラッシュ)のうしろの「KUV」、これの「U」をとればいいんですね。
…しかしここで注意!
「KUV」の「U」をとればいいからといって、単純に「U」を「何にもなし」に置換してしまうと…※16 ※17。
「WLU」の「U」までなくなってしまいました。
これじゃあダメです。
こういうときは、…落ち着いて考えましょう。
…そう。
「KUV」を「KV」にしてやればよいのです※18 ※19。
こうすれば、「WLU」は置換の対象になりませんゆえ。
置換をうまく使うには、時にパズルのような発想が必要です。
「むずかしい…」と思ってしまう方もいらっしゃるかもしれないですし、たしかに、すぐにうまくいくわけじゃないかもしれないですが、うまくいかなくても、こうやって経験を積んでおくことが大事なんですよ。
それがあなたの財産になりますから。
というわけで、次いってみましょう。
れんしゅう3
ハイ、では第3問※20。
まず最初にやってほしいのは、「SAW」を「SBW」にする、です。 これもアレですよ、たんじゅんに「A」→「B」に置換しちゃうとダメですからね、他にも「A」、ありますから。 素直に、「SAW」→「SBW」に置換する※21 ※22。
ハイ次!
どんどんいくよ。
今度は、「A159」「A259」「A359」…とあるうちの、数字の前の「A」をとりたい。
つまり、「A159」「A259」「A359」…→「159」「259」「359」…になればよい。
さて、どうしましょうか。
・
・
…はい、これは、ちょっとイジワルな問題で、読み替えが必要なんです。
「数字の前の「A」をとる」のじゃなくて、「PA」を「P」にする、「SPA」を「SP」にする、と考えるんです※23。
でね、「PA」→「P」に置換すれば「SPA」も「SP」になるから(部分が共通なので)、これを実行してやればよい※24 ※25。
次いきましょう。
れんしゅう4
れんしゅう4はこんな問題※26。
これまでは文字を減らす系の問題でしたが、今回は文字を増やしますよ。
要は、ひとつめの「-(ハイフン)」のうしろに、「D-」を追加したい。
はい、チャレンジ。
・
・
文字を追加する場合にも、置換が有効なときがあります。
ただし、この問題もね、単純に「-」を「-D-」に置換するとダメなんですよ※27 ※28。
「EUA」の前にもハイフンあるから。
なのでね、今回は、「QE-」を「QE-D-」に置換してやります。 これで問題解決※29 ※30。
こんなふうに、置換は文字を追加する場合にも使えるのです。 覚えておいてください。
れんしゅう5
ラスト。 れんしゅう5※31。
ひとつめの問題は、「「RTM」「RTY」「RTL」の「M」「Y」「L」をとりたい」です。
なかなか歯ごたえのある問題ですね。
というのも、検索する文字が「M」だったり「Y」だったり「L」だったりで、検索文字が一様でないからです。
さて、どうしましょうか。
・
・
…こういうときは、ワイルドカードってヤツを使いましょう。
…ワイルドカードってことば、M1グランプリやスポーツの大会だと「敗者復活枠」ぐらいの意味で使われてるんですが、要はワイルドカードって、トランプで言う「ジョーカー」のこと。
要するに、「どんな役目でも果たせる」って意味なんです。
だから、対象文字が「あ」でも「い」でも「う」でも、「A」でも「B」でも「C」でも数字の「1」でも、包摂するんです。
M1やスポーツの「ワイルドカード」がそう呼ばれるのも、要するに「誰が出てきてもいいから」なんですね。
で、Excelのワイルドカードには2種類あって、「*(半角アスタリスク)」と「?(半角ハテナ)」がそうです。
両者のちがいを、ちょいとまとめてみました※32。
半角アスタリスクは、「文字数に制限なく何文字でも」です。
半角ハテナは「1文字だけ」です。
ちょっと、試しにやってみましょうか。
下の画像↓、見てください※33。
これらの文字列に対して、ワイルドカードを使ってみましょうか。 まず、アスタリスクの場合。 「ABC*」を「ABC」に置換してみます※34 ※35。
…アレ?
いまいちピンと来ないかもしれないですね。
もういっちょやってみましょう。
今度は、「ABC*」を空っぽにします※36 ※37。
さて、どうなりますかな。
こうなります。
要するに、ね、「ABC」とそのうしろを、全部とっちゃう、ってことなんです、アスタリスクで指定すると。
で、2番目と4番目の「BCDEFGH」と「ABABABA」は、「ABC」を含まないから何も起きない、と※38。
ちょっとわかりづらかったかな?
大丈夫です、大事なのは経験です、経験。
次、半角ハテナもやってみましょう。
まずは「ABC?」→「ABC」から※39 ※40。
半角ハテナはどんな文字でも1文字分です。
なので今回は、「ABC」の次の文字が何であれ、なくなります。
もういっちょ行きましょう。
「ABC?」→空っぽです※41 ※42。
ちなみに、ハテナは複数使って、こんなこともできます※43 ※44。
「E」の次に3文字あるところだけ、置換してくれます。
なので、「E」の次が「FG」しかない1番目や、「F」しかない3番目には何も起きません。
ちなみに、アスタリスクを使うとこうなります※45 ※46。
文字数が関係なくなります。
このぐらいにしておきましょう。
混乱させてしまったかもしれないですね。
まあ、何事も経験です、経験。
ゆっくり、Excelの挙動に慣れていってもらえれば。
ということで、問題に戻りましょう※47。
この問題ね、「RT」の次の1文字が「M」だったり「Y」だったり「L」だったりするんだけど、要はコイツラがなくなればよいんだよね。 なので、ハテナを使って、こうします※48 ※49。
ハテナを使えば、「RT」の次の文字が何であれ、「RT」を含めて3文字分ひっかけることができるから、あとはそれを「RT」に換えてやるだけ。
これで何とかなる。
じゃあ最後。
「末尾2文字の前に「-(ハイフン)」を入れたい」です。
どう、やりますかな。
・
・
…ハイ、ここまでずっと置換を使ってきたのですが、実はコイツは、置換を使いません。
leftとrightと&を組み合わせて対処します。
こんなふうに※50 ※51。
…要は、left関数とright関数を使って文字列の左側と右側を分けて、あいだをハイフンでつなぐ、ってことをやりたいんです。
ただね、左側の文字数が4文字だったり5文字だったりで、異なるところがあるから、そこを全体の文字数(len関数)から2を引くことで対処してます。
上では一気に式をいれてしまいましたが、もちろんひとつずつ処理をしていってもOKです※52 ※53。
というか、その方がわかりやすいです。
大事なのは、「自分がやりやすいやり方」です。
ハイ、ということで、5問練習していただきました。 「なんかあやふやだったな…」ってところは、もう1回やっていただければ。 みなさんに必要なのは「経験値」です。 うまくいった経験はもちろん、うまくいかなかった経験も含めて、経験値を積んでいただければ。 ということで、シーユーアゲン!