其ノ3 くっつける 分ける
今回は、「くっつける 分ける」と題して、住所録を扱おうと思います。
が、実は、このページで言いたいことはただひとつだけ、「くっつけるより、分ける方がむずかしい」ってことなんです。
とりあえず、下↓からダウンロードしてもらえます?
開くとこんな↓です※1。
今回もシートが3枚あります。 じゅんばんに練習していきましょうか。
2つのセル内容をくっつける
ハイ、ではまず、「練習その1」シートを見てください※2。
A列に都道府県名が、B列に区市町村以下の住所が入ってますね。
最初のミッションは、「この2つを合体させてひとつのセルに収める」です。
さて、どうやりましょうか。
・
・
実はすごくシンプル。
「&」でつないであげれば良いんです※3。
「&」は半角ですよ。
「=[都道府県セル]&[区市町村セル]」と入れれば、つまり「=A2&B2」と式を入れれば、くっついた値が表示されます※3。
あ、式を入れた後は値貼りしておいてくださいね※5 ※6。 そうじゃないと、編集できないですから。
基本的には、「数式を入れたら値貼りする」ものだ、と覚えておきましょう。
もちろん、数式のままの方が良い場合もあります。
元の値が書き換わったときに連動して反映させたいときとかは、数式のままの方が良いでしょう。
しかし、通常は、値貼りしちゃう方が安全です。
なぜなら、数式のままだと、元の列を削除したりとかできなくなってしまうからです(数式エラーになってしまう)。
ま、このあたりは、おいおい慣れていきましょう。
経験値を積めば、値貼りすべきか、数式のままで行くのか、わかるようになるはずですから。
…ということで、「単純にくっつける」は、OKですかね。
では次の課題。「あいだを半角空けて合体したい」と言われたら?
・
・
まず例題として、あいだに「:(コロン)」を入れてみましょうか。
文字列を挿入する場合は、入れたい文字を「"(ダブルコーテーション)」で囲ってやります。
つまり、「= 都道府県セル &":"& 区市町村セル」とすれば良いんですね※7 ※8。
ついつい忘れがちですが、「&」もきちんと前後に入れてあげてくださいね。
この「&」ですが、これを知っておくと、例えば「すべてのセルのおしりに同じ文字を追加したい」なんてときに便利です。
例えば、「KB100C」「KB200C」「KB300C」…みたいな記号の羅列があって、「こいつら全部のおしりに-Nを追加してくれ」なんてオーダーが来たときでも、「&」とチョンチョンを使って「=[対象セル] & "-N"」みたいに、追加する文字をチョンチョンで囲んでアンドでつないでやれば一気に追加することができます。
いろいろ応用が利くワザなんですよ。
さて、あいだに半角スペースを挿入する場合も同様です。半角スペースもひとつの文字なので、コロンのときと同様、半角スペースを「"」で囲んでください※9 ※10。
半角スペースの前後を、チョンチョンで囲むんですよ。 こんな↓感じに※11。
ガッテンいただけましたでしょうか。
では、「くっつける」話、終わりー。
区切り位置で分ける
ハイ、では次。 「分ける」へ進みましょう。 「練習その2」のシートを開いてください※12。
都道府県とそれ以下がスペースで区切られていますね。
これを、都道府県とそれ以下でセルを分けたい。どうしますか?
・
・
「区切り位置」ってやつを使おうと思うんですが、その前に、この列をコピってとなりに複製しましょう※13。
この作業、やってもやらなくても本筋にはあまり関係のない話なのですが、…実は、「区切り位置」を使うと、元となるデータがなくなっちゃうんですよ。
だから、作業前のデータを残しておくという意味合いで、念のため。
これで安心してデータをこねくり回すことができます。
では「区切り位置」、使ってみましょう。
まず、B列(コピった方)を選択してください※14。
「区切り位置」を使うときは、必ず範囲を選択してから使ってくださいね。
で、B列を選択したら、リボンの「データ」から「区切り位置」を使います※15。
すると、こんな画面になります※16。
「データのファイル形式を選択してください」とあります。 選択式になっていますが、今回は上側の「カンマやタブなどの~」を選んでください。 今回スペースのところでセルを切りたいので、一見すると下の「スペースによって~」なのかな?と考えちゃうかもしれませんが、スペースもひとつの文字と考えてください。 下側の「スペースによって~」は、指定した文字数、例えば左から3文字目とかで、機械的にぶった切る場合に使うものです。 けど、都道府県名って、3文字のところもあれば4文字のところもある。 それに今回は、都合良くあいだにスペースがあるので、スペースの前後で切ってくれるよう指定したいのです。 なので、上の「カンマやタブなどの~」のままで、「次へ」。
次に、区切る文字を選びます※17。
デフォルトの設定では「タブ(Tab)」になっています。
今回はスペースのところで区切りたいので、「スペース」を選択してください※18。
すると、下側の「データのプレビュー」のところに、スペースで区切られたあとのイメージが表示されます。確認しておいてください。
ついでに、区切り文字の「タブ」、外しておきましょう。
これも実は、セル内の文字にタブが含まれていないので不要な作業なのですが、なんとなくで仕事しない、余計なチェックを入れない、という教育的な意味で、外すことにします。
スペースだけにチェックを入れたら、次へ。
次の画面。区切ったあとのセルの書式を選ぶ画面です。 が、今回は標準の書式で良いでしょう。 そのまま完了でOKです※19。 うまくいきましたか?※20
ちゃんとスペースの前後で分けられていますね。 確認しておいてください。
関数で分ける
ハイ次! 練習その3※21。
今度はあいだに空白がありません。ぴっちり詰まってます。
これをやっぱり、都道府県とそれ以下で分けたい。どうしましょうか。
・
・
練習その2みたいに、特定の文字(ないしスペース)が入っていれば、分けるのはカンタンなんですよ。
でも今度は、「ココで区切って!」と目印になるものがない…。
そもそも都道府県って、「青森県」など3文字のところが多いけど、「神奈川県」「和歌山県」みたいに4文字のところもあるし、じゃあ「○○県」の「県」のところで切ればよいかって言うと、「北海道」「東京都」「大阪府」「京都府」は、おしりの文字が違う。
ひとつのルールでまとめられないんですよ。困りました。
・
・
こういうときにどうするか。
長考してウンウン唸って、良いアイデアがでるなら悩むのも「アリ」です。
でも、もし「悩むより手を動かした方が早いかも…」と判断するなら、愚直でもいいから前に進む、という道もあります。
例えば、
1.「区切り位置」を使って、とにかく左から3文字目でぶった切る
2.そのうえで、「神奈川県」みたいな4文字のところを目で探して、手作業で分ける
というプラン。
あまりスマートではないですが、時間とか現在の自分の技量とか総合的に考えた結果、このやり方でとにかく進める、というのも全然アリだと思います。
問われているのは結果ですからね。
このプランで一回やってみましょうか。
区切り位置を使います※22。
今度は下の「スペースによって~」を選択します。 そうして次の画面へ※23。
フィールドの幅を指定する画面になります。
下側のプレビューで、左から3文字目のところを選択してください。
すると、区切り線が引かれます。
次の画面でセルの書式をどうするのか聞かれますが、ここは今回も標準で良いでしょう。
完了です※24。
あとは、4文字の県名を手で直していきます※25。
画面の黄色セルみたいなところですね。
「神奈川」で切られているので、ちゃんと「神奈川県」に直してください。
このやり方で、あまりスマートではないですが、なんとか都道府県を分けることができます。
え?
もっと効率的なやり方はないかって?
・
・
4文字の都道府県って全部言えます?
…「神奈川県」「和歌山県」「鹿児島県」ですね。
あとは3文字です。
このことがわかっていれば、道は開けるかも。
上記3県だけleft関数を使って左から4文字を引っ張ってくる、残りは左から3文字、とやれば。
あとは、左から4(ないし3)文字除いた残りを引っ張ってくる方法を考えれば、イケそうですよね。
まず、「神奈川県」で始まるセルを抽出しましょう。
フィルタをかけてください※26。
フィルタで絞り込むのは元々あった「合体住所」です。
で、いつもは下の一覧からチェックを付けたり外したりして抽出するのですが、今回は「テキストフィルタ」ってやつを使います。
画面の「テキストフィルタ」にマウスを合わせ、「指定の値で始まる」を選んでください※27 ※28。
コイツを使うと、「○○で始まる文字」や「○○で終わる文字」、「○○と等しい(完全一致)」や「○○を含む(部分一致)」、はたまた応用的に、「○○で始まらない」や「○○で終わらない」も抽出することができます。
今回はひとまず「神奈川県」で始まる文字を抽出したいので、「○○で始まる」を入力するボックスに「神奈川県」と入れます※29。
これで、「神奈川県~」で始まる住所が抽出されます※30。
「神奈川県」で始まる住所がずらっと並びましたね。
では、式を入れます。
使う関数はleftとmidです。
…覚えてます?
いちおう、使い方、おさらいしときましょうか。
・left関数 =left(取り出す元となるセル , 左から何文字分?)
・right関数 =right(取り出す元となるセル , 右から何文字分?)
・mid関数 =mid(取り出す元となるセル , 何文字目からスタート? , 何文字取り出す?)
ついでなのでrightも書いておきました。
まあ、今回は使わないのですが…。
ではまず住所の左側、県名の方からもってきます。
今回は「神奈川県」なので、4文字ですね。
なので、
=left(A17,4)
と入れてください※31 ※32。
右は、mid関数を使います。 mid関数は、上にも書いた通り、=mid(取り出す元となるセル , 何文字目からスタート? , 何文字取り出す?)という形なので、
=mid(A17,4+1,len(A17)-4)
と入れてください。
「何文字目からスタート?」は、「神奈川県」の次から引っ張ってきたいので、4+1となります。
後半はちょっと難しいですが、len関数で全文字数を割り出して、そこから「神奈川県」の文字数4を引く、という手法で※33 ※34。
うまくいったみたいですね。
そしたら式を、フィルタをかけてある全セルにコピーしてください※35。
「神奈川県」で始まるセルはこれでOKです。
「和歌山県」「鹿児島県」も同様にしてください。
テキストフィルタで抽出して式を入れる。
ちなみに、「鹿児島県」で始まるセルは今回ありません。
あしからず。
・
・
これで、4文字の県名は引っ張ることができました。
フィルタを解除するとこんな感じ※36です。
あとは、式の入っていないセルです。 さっき式を埋めた列(画面のD列)のフィルタを開き、「空白セル」を選んでください※37。
今度は、左から3文字を引っ張れば良いんでしたね。
なので、さっきの式の「4」のところを「3」に変えて、入れてください※38 ※39。
今回は式を全文紹介したりしないですよ(笑)。
いじわるじゃなくて、教育です、教育。
式を入れたら、空白セル全部にコピペしてくださいね※40。
これで、式を全部埋めることができました。 フィルタを解除して、値貼り付けすれば完成です※41。 ふう。
ハイ、今回はこんな感じです。 けっこうやること多かったですね。 とにかく、一度くっついちゃったものを分けるのは、なかなかむずかしいんです。 そのことだけでも覚えておいていただけたら。 ということで、シーユーアゲン!
おまけ:「市」で切り離す
ハイ、以下おまけ。
都道府県じゃなくて、「市」とか「区」で切り離したい、ってとき、どうするか。
ちょっとむずかしいので、余裕のある方はやってみてください。
せっかくなので、さっき切り離した都道府県以下の住所でやってみましょうか。
でね、まず、式を入れてどうこうする前に、まずざっと眺めてほしいんですよ、住所全体を。
すると、
・
・
まず、当然と言えば当然なのですが、「市」の文字数ってバラバラなんですよね。
都道府県名だと「だいたい3文字、多くて4文字」なのですが、そんなふうになっていないわけで。
困りました。
…そしてさらに。「市」で区切れそうなところもあれば、「市」を含まない住所もありますよね。
「渋谷区」とか。
こういうところは、「"市"で分ける」って統一ルールで対応できないところだから、後で分け方を考えないといけないな、ということがわかります。
こういうイレギュラーを把握するために、まず通覧することが大事なのですよ。
まあとりあえず、まず「市」を含むところだけ抽出しましょう。
フィルタで抽出するのですが、今回は簡易的なテキストフィルタを使います。
↓画面のところに「市」と入力してください。
「市」を含む住所が抽出されます※42。
んで、「市」がどこにあるか割り出したい。 今回はfindって関数を使います。 …find、「見つける」って意味ですね。 find関数の使い方は、
・find関数 =find(検索する文字 , 対象セル)
となっていて、「検索する文字」をチョンチョン(ダブルクォーテーション)で囲ってやれば、それが左から何文字目にあるか割り出してくれる関数です。
つまり、コイツを使って左から何文字目で切り離すか割り出して、それであとは都道府県と同様にleftとmidで分けちゃおう、というワケ。
なので、「市」が何文字目にあるか割り出す列を設けて(画面のF列)、そこに、
=find("市",E2)
と入れてください※43。 対象セルは「会津若松市~」なので、「市」は左から5文字目。 なので「5」という数字が返ります※44。
うまくいきましたでしょうか。
そしたら、find式をコピーします※45。
それぞれ、3文字目だったり4文字目だったり、「市」の位置が割り出せましたね。
「市」を含むところはとりあえずこれでOK。
そしたら、いったんE列のフィルタを解除して、F列でまだ式を入れてないところ(空白セル)をフィルタで抽出してください※46。
今度はココに式を入れますよ。
そしたら、コイツらはもう「市」を含まない住所なワケですよ。 なので今度は、「区」で区切りましょう。 =find("区",E4)と式を入れてください※47。
で、この式を空白のところにコピーするんだけど…※48。
エラー(#value!)になってる箇所がある。
トホホ…。
…このエラー箇所は要するに、「"市"も"区"も含まない」んですよ。
ちょっと、フィルタで見ていきましょう※49 ※50。
…エラーのところだけ見ていくと、どうやら「郡」のところで区切れそうですね。
なので、今回はコイツら、「郡」のところで区切っておきますか。
ということで、もう一回find使います。
今度の検索文字は「郡」です※51 ※52。
これで、エラーがなくなりましたね。
フィルタを解除して、全セルにしておいてください。
いよいよ切り離す式を入れます。
でね、再びleftとmidで切り離すんですが、今回、F列の数字の位置で切り離したいんですよ。
なので、入れる式としては、
=left(E2,F2)
=mid(E2,F2+1,len(E2)-F2)
と、さっきfindで割り出した数字を参照するようにしてください※53 ※54。
midの第2引数、「何文字目からスタート?」のところで、F列の値にプラス1するのがポイントですね。
というわけで、あとは式をコピーすればひとまず完成なのですが…※55。
…でもね、うまくいってないところもあるんです※56。 ↓画面の黄色いセル。
うまくいかないのは、「市原市」とか「廿日市市」といった、検索文字が2回出てくるところ。
find関数は、検索文字が2回出てくると、1回目のところで止まっちゃうんですよ。
でね、これはもう、しょうがない。
こういうところは、目検と手作業でなんとかちまちま直していきましょう。
でも、関数で8割9割引っ張ってこれたなら良しとしていただけないでしょうか。
どうでしょうか。