---topics:文字列加工、置換、ワイルドカード---

其ノ6 規則的な文字列を規則的に加工する

ハイ、本日は、「規則的な文字列を規則的に加工する」と題しまして、文字列をいじくる練習をしましょう。
というわけで、以下からダウンロード、お願いします。

開くとこんな↓です※1

kiso06_mojiretukakou.xlsx 答え入り
※1 kiso06_mojiretukakou.xlsx 答え入り

実はもうすでに赤文字で答えを入れてあるんだけど(笑)、みなさんの方ではこんな↓ふうに※2いったん赤いところを消して、どうやったら赤文字のように加工できるか、練習してみてください。

赤文字の答えをいったん消して、練習しよう
※2 赤文字の答えをいったん消して、練習しよう

シートは5枚あります。 じゃあ、いっちょ、やってみますか。

れんしゅう1

というわけで、最初のレッスン。 「れんしゅう1」シート、見てください※3

1枚目のシート
※3 1枚目のシート

左側にある黒い文字の「記号」、「MMC13000T5」とか「MMC13001T5」とか…、これを加工して、赤い文字の状態にする、っていうのがミッションです。 さきほども言いましたが、みなさんは赤い文字の答えをいったん消して、自力でやってみてくださいね。
ハイ、では最初のミッション! 下記の記号の末尾に「N」を入れてください。 「MMC13000T5」だったら「MMC13000T5N」に、「MMC13001T5」は「MMC13001T5N」にするんですよ。 ハイ、スタート。

 ・
 ・
…できました?
ちなみに、手作業で1コ1コ「N」入れた人はいますか? 元の文字列をコピーして、1コ1コおしりに手作業で「N」入れた人※4 ※5

元の「記号」をコピーし貼り付けて…
※4 元の「記号」をコピーし貼り付けて…
手作業でN入れる
※5 手作業でN入れる

個人的にはこういう人、大好きです。 ですが、今回はもう少し効率よくやってみましょう。

ハイ、課題は「末尾にNを入れる」でしたね。 なので、&でつないでやります※6 ※7。 &の使い方、其ノ3でやりましたね。

&演算子でくっつける
※6 &演算子でくっつける
あとは式をコピー→値貼りでOK
※7 あとは式をコピー→値貼りでOK

&は、2つのセル内容をくっつけるだけじゃなく、任意の文字を追加することもできるんですよ。 文字を入れたい場合は、""(ダブルクォーテーション)ではさんであげてくださいね。
あ、あと、式を入れたら、値貼りしておいてください。 じゃないと、文字列にならないので。

問題2「末尾に「-K」を入れてください」も同様です。 &でつないでやれば※8 ※9

末尾に-Kを足す
※8 末尾に-Kを足す
さきほどと同様でOK
※9 さきほどと同様でOK

できました? こんな感じで次々いきますよ。

れんしゅう2

では次のシート、れんしゅう2。
今度は、「「/(スラッシュ)」をとりたい」と「「KUV」の「U」をとって「KV」にしたい」の2問です※10

れんしゅう2
※10 れんしゅう2

ハイ、では、やってみましょうか。 まず、スラッシュをとる方から。
はじめに、元の記号をコピーします※11 ※12

元記号をコピー
※11 元記号をコピー
準備完了
※12 準備完了

で、今回は、其ノ5で紹介した置換って機能を使います。 置換、「ちかん」って読むんですが、これを使うと指定した文字を別の何かに置き換えることができるんです。 で、使い方はというと…、まず、対象範囲を選択してCtrl+Hを押します※13

対象範囲を選択してCtrl+H 必ず範囲を選択すること
※13 対象範囲を選択してCtrl+H 必ず範囲を選択すること

置換をするときは必ず範囲を選択してからにしてください。 さもないとよけいなところまで置換範囲に含まれてしまいます。
んで、「検索する文字列」に/(スラッシュ)を、「置換後の文字列」には何も入力しません※14。 そのままでOKです。 この状態で「すべて置換」を実行すると…※15

対象範囲を選択してCtrl+H 必ず範囲を選択すること
※14 /(スラッシュ)を「何にもなし」に置換する
できた
※15 できた

スラッシュがなくなりました。
「9件を置換しました」とメッセージが出ましたが、ちゃんとこの「9件」がデータの個数と一致するか、確かめておいてくださいね。

ハイ、では次!
/(スラッシュ)のうしろの「KUV」、これの「U」をとればいいんですね。
…しかしここで注意! 「KUV」の「U」をとればいいからといって、単純に「U」を「何にもなし」に置換してしまうと…※16 ※17

ダメな例 単純に「U」をトルしてしまうと…
※16 ダメな例 単純に「U」をトルしてしまうと…
「WLU」の「U」までなくなってしまう
※17 「WLU」の「U」までなくなってしまう

「WLU」の「U」までなくなってしまいました。 これじゃあダメです。

こういうときは、…落ち着いて考えましょう。 …そう。 「KUV」を「KV」にしてやればよいのです※18 ※19
こうすれば、「WLU」は置換の対象になりませんゆえ。

正解は、「KUV」を「KV」に置換する
※18 正解は、「KUV」を「KV」に置換する
perfect
※19 perfect

置換をうまく使うには、時にパズルのような発想が必要です。 「むずかしい…」と思ってしまう方もいらっしゃるかもしれないですし、たしかに、すぐにうまくいくわけじゃないかもしれないですが、うまくいかなくても、こうやって経験を積んでおくことが大事なんですよ。 それがあなたの財産になりますから。
というわけで、次いってみましょう。

れんしゅう3

ハイ、では第3問※20

れんしゅう3
※20 れんしゅう3

まず最初にやってほしいのは、「SAW」を「SBW」にする、です。 これもアレですよ、たんじゅんに「A」→「B」に置換しちゃうとダメですからね、他にも「A」、ありますから。 素直に、「SAW」→「SBW」に置換する※21 ※22

「SAW」を「SBW」に置換
※21 「SAW」を「SBW」に置換
これでOK
※22 これでOK

ハイ次! どんどんいくよ。 今度は、「A159」「A259」「A359」…とあるうちの、数字の前の「A」をとりたい。 つまり、「A159」「A259」「A359」…→「159」「259」「359」…になればよい。
さて、どうしましょうか。

 ・
 ・
…はい、これは、ちょっとイジワルな問題で、読み替えが必要なんです。
「数字の前の「A」をとる」のじゃなくて、「PA」を「P」にする「SPA」を「SP」にする、と考えるんです※23

今回の問題の解説
※23 今回の問題の解説

でね、「PA」→「P」に置換すれば「SPA」も「SP」になるから(部分が共通なので)、これを実行してやればよい※24 ※25

「PA」→「P」に置換
※24 「PA」→「P」に置換
こうなる
※25 こうなる

次いきましょう。

れんしゅう4

れんしゅう4はこんな問題※26

れんしゅう4
※26 れんしゅう4

これまでは文字を減らす系の問題でしたが、今回は文字を増やしますよ。 要は、ひとつめの「-(ハイフン)」のうしろに、「D-」を追加したい。 はい、チャレンジ。

 ・
 ・
文字を追加する場合にも、置換が有効なときがあります。 ただし、この問題もね、単純に「-」を「-D-」に置換するとダメなんですよ※27 ※28。 「EUA」の前にもハイフンあるから。

×ダメな例
※27 ×ダメな例
うしろのハイフンもひっかかっちゃう
※28 うしろのハイフンもひっかかっちゃう

なのでね、今回は、「QE-」を「QE-D-」に置換してやります。 これで問題解決※29 ※30

正解は、「QE-」を「QE-D-」に置換
※29 正解は、「QE-」を「QE-D-」に置換
これで解決
※30 これで解決

こんなふうに、置換は文字を追加する場合にも使えるのです。 覚えておいてください。

れんしゅう5

ラスト。 れんしゅう5※31

れんしゅう5
※31 れんしゅう5

ひとつめの問題は、「「RTM」「RTY」「RTL」の「M」「Y」「L」をとりたい」です。
なかなか歯ごたえのある問題ですね。 というのも、検索する文字が「M」だったり「Y」だったり「L」だったりで、検索文字が一様でないからです。 さて、どうしましょうか。

 ・
 ・
…こういうときは、ワイルドカードってヤツを使いましょう。 …ワイルドカードってことば、M1グランプリやスポーツの大会だと「敗者復活枠」ぐらいの意味で使われてるんですが、要はワイルドカードって、トランプで言う「ジョーカー」のこと。 要するに、「どんな役目でも果たせる」って意味なんです。 だから、対象文字が「あ」でも「い」でも「う」でも、「A」でも「B」でも「C」でも数字の「1」でも、包摂するんです。 M1やスポーツの「ワイルドカード」がそう呼ばれるのも、要するに「誰が出てきてもいいから」なんですね。
で、Excelのワイルドカードには2種類あって、「*(半角アスタリスク)」と「?(半角ハテナ)」がそうです。 両者のちがいを、ちょいとまとめてみました※32

ワイルドカードのよくわかる解説
※32 ワイルドカードのよくわかる解説

半角アスタリスクは、「文字数に制限なく何文字でも」です。
半角ハテナは「1文字だけ」です。
ちょっと、試しにやってみましょうか。 下の画像↓、見てください※33

ワイルドカードのレッスン
※33 ワイルドカードのレッスン

これらの文字列に対して、ワイルドカードを使ってみましょうか。 まず、アスタリスクの場合。 「ABC*」を「ABC」に置換してみます※34 ※35

ABC*→ABC
※34 ABC*→ABC
こうなる
※35 こうなる

…アレ? いまいちピンと来ないかもしれないですね。
もういっちょやってみましょう。 今度は、「ABC*」を空っぽにします※36 ※37。 さて、どうなりますかな。

ABC*→blanc
※36 ABC*→blanc
今度はこうなる
※37 今度はこうなる

こうなります。
要するに、ね、「ABC」とそのうしろを、全部とっちゃう、ってことなんです、アスタリスクで指定すると。 で、2番目と4番目の「BCDEFGH」と「ABABABA」は、「ABC」を含まないから何も起きない、と※38

アスタリスクの挙動
※38 アスタリスクの挙動

ちょっとわかりづらかったかな? 大丈夫です、大事なのは経験です、経験。
次、半角ハテナもやってみましょう。 まずは「ABC?」→「ABC」から※39 ※40

「ABC?」→「ABC」
※39 「ABC?」→「ABC」
結果こうなる
※40 結果こうなる

半角ハテナはどんな文字でも1文字分です。 なので今回は、「ABC」の次の文字が何であれ、なくなります。
もういっちょ行きましょう。 「ABC?」→空っぽです※41 ※42

天ぷら お前だ 空っぽ(スターリンの歌)
※41 天ぷら お前だ 空っぽ(スターリンの歌)
空っぽだからこそ吸収できるのよ
※42 空っぽだからこそ吸収できるのよ

ちなみに、ハテナは複数使って、こんなこともできます※43 ※44

「E???」→「VWXYZ」
※43 「E???」→「VWXYZ」
1件ヒット
※44 1件ヒット

「E」の次に3文字あるところだけ、置換してくれます。 なので、「E」の次が「FG」しかない1番目や、「F」しかない3番目には何も起きません。
ちなみに、アスタリスクを使うとこうなります※45 ※46。 文字数が関係なくなります。

「E*」→「VWXYZ」
※45 「E*」→「VWXYZ」
こうなりました
※46 こうなりました

このぐらいにしておきましょう。 混乱させてしまったかもしれないですね。 まあ、何事も経験です、経験。 ゆっくり、Excelの挙動に慣れていってもらえれば。

ということで、問題に戻りましょう※47

問題に戻ってきた
※47 問題に戻ってきた

この問題ね、「RT」の次の1文字が「M」だったり「Y」だったり「L」だったりするんだけど、要はコイツラがなくなればよいんだよね。 なので、ハテナを使って、こうします※48 ※49

「RT?」→「RT」に置換
※48 「RT?」→「RT」に置換
うまくいった
※49 うまくいった

ハテナを使えば、「RT」の次の文字が何であれ、「RT」を含めて3文字分ひっかけることができるから、あとはそれを「RT」に換えてやるだけ。 これで何とかなる。

じゃあ最後。 「末尾2文字の前に「-(ハイフン)」を入れたい」です。 どう、やりますかな。

 ・
 ・
…ハイ、ここまでずっと置換を使ってきたのですが、実はコイツは、置換を使いません。 leftとrightと&を組み合わせて対処します。 こんなふうに※50 ※51

leftとright、&の組み合わせ
※50 leftとright、&の組み合わせ
式をよく見て、ついてきてくださいね
※51 式をよく見て、ついてきてくださいね

…要は、left関数とright関数を使って文字列の左側と右側を分けて、あいだをハイフンでつなぐ、ってことをやりたいんです。 ただね、左側の文字数が4文字だったり5文字だったりで、異なるところがあるから、そこを全体の文字数(len関数)から2を引くことで対処してます。

上では一気に式をいれてしまいましたが、もちろんひとつずつ処理をしていってもOKです※52 ※53。 というか、その方がわかりやすいです。 大事なのは、「自分がやりやすいやり方」です。

複雑なときは、一段階ずつやった方が確実
※52 複雑なときは、一段階ずつやった方が確実
1コずつやって、最後&でつなぐ
※53 1コずつやって、最後&でつなぐ

ハイ、ということで、5問練習していただきました。 「なんかあやふやだったな…」ってところは、もう1回やっていただければ。 みなさんに必要なのは「経験値」です。 うまくいった経験はもちろん、うまくいかなかった経験も含めて、経験値を積んでいただければ。 ということで、シーユーアゲン!

Copyright(C)森田表計算