---topics:&演算子、区切り位置、find関数---

其ノ3 くっつける 分ける

今回は、「くっつける 分ける」と題して、住所録を扱おうと思います。 が、実は、このページで言いたいことはただひとつだけ、「くっつけるより、分ける方がむずかしい」ってことなんです。
とりあえず、下↓からダウンロードしてもらえます?

開くとこんな↓です※1

kiso03_juusyoroku.xlsx
※1 kiso03_juusyoroku.xlsx

今回もシートが3枚あります。 じゅんばんに練習していきましょうか。

2つのセル内容をくっつける

ハイ、ではまず、「練習その1」シートを見てください※2
A列に都道府県名が、B列に区市町村以下の住所が入ってますね。

1番目のシート
※2 1番目のシート

最初のミッションは、「この2つを合体させてひとつのセルに収める」です。 さて、どうやりましょうか。
 ・
 ・
実はすごくシンプル。 「&」でつないであげれば良いんです※3。 「&」は半角ですよ。

=A2&B2
※3 =A2&B2

「=[都道府県セル]&[区市町村セル]」と入れれば、つまり「=A2&B2」と式を入れれば、くっついた値が表示されます※3

式を全セルにコピー
※4 式を全セルにコピー

あ、式を入れた後は値貼りしておいてくださいね※5 ※6。 そうじゃないと、編集できないですから。

列ごとコピー→同じ場所に形式を選択して貼り付け:値
※5 列ごとコピー→同じ場所に形式を選択して貼り付け:値
式を入れたら基本的には値貼りします。覚えておきましょう
※6 式を入れたら基本的には値貼りします。覚えておきましょう

基本的には、「数式を入れたら値貼りする」ものだ、と覚えておきましょう。
もちろん、数式のままの方が良い場合もあります。 元の値が書き換わったときに連動して反映させたいときとかは、数式のままの方が良いでしょう。 しかし、通常は、値貼りしちゃう方が安全です。 なぜなら、数式のままだと、元の列を削除したりとかできなくなってしまうからです(数式エラーになってしまう)。
ま、このあたりは、おいおい慣れていきましょう。 経験値を積めば、値貼りすべきか、数式のままで行くのか、わかるようになるはずですから。

…ということで、「単純にくっつける」は、OKですかね。
では次の課題。「あいだを半角空けて合体したい」と言われたら?
 ・
 ・
まず例題として、あいだに「:(コロン)」を入れてみましょうか。
文字列を挿入する場合は、入れたい文字を「"(ダブルコーテーション)」で囲ってやります。 つまり、「= 都道府県セル &":"& 区市町村セル」とすれば良いんですね※7 ※8

コロンをチョンチョンで囲む
※7 コロンをチョンチョンで囲む
都道府県:区市町村
※8 都道府県:区市町村

ついつい忘れがちですが、「&」もきちんと前後に入れてあげてくださいね。

この「&」ですが、これを知っておくと、例えば「すべてのセルのおしりに同じ文字を追加したい」なんてときに便利です。 例えば、「KB100C」「KB200C」「KB300C」…みたいな記号の羅列があって、「こいつら全部のおしりに-Nを追加してくれ」なんてオーダーが来たときでも、「&」とチョンチョンを使って「=[対象セル] & "-N"」みたいに、追加する文字をチョンチョンで囲んでアンドでつないでやれば一気に追加することができます。 いろいろ応用が利くワザなんですよ。

さて、あいだに半角スペースを挿入する場合も同様です。半角スペースもひとつの文字なので、コロンのときと同様、半角スペースを「"」で囲んでください※9 ※10

コロンをチョンチョンで囲む
※9 半角スペースをチョンチョンで囲む
都道府県:区市町村
※10 都道府県&半角スペース&区市町村

半角スペースの前後を、チョンチョンで囲むんですよ。 こんな↓感じに※11

チョンチョンのあいだに半角スペ すると半角スペースが挿入される
※11 チョンチョンのあいだに半角スペ すると半角スペースが挿入される

ガッテンいただけましたでしょうか。
では、「くっつける」話、終わりー。

区切り位置で分ける

ハイ、では次。 「分ける」へ進みましょう。 「練習その2」のシートを開いてください※12

2枚目のシート
※12 2枚目のシート

都道府県とそれ以下がスペースで区切られていますね。 これを、都道府県とそれ以下でセルを分けたい。どうしますか?
 ・
 ・
「区切り位置」ってやつを使おうと思うんですが、その前に、この列をコピってとなりに複製しましょう※13
この作業、やってもやらなくても本筋にはあまり関係のない話なのですが、…実は、「区切り位置」を使うと、元となるデータがなくなっちゃうんですよ。 だから、作業前のデータを残しておくという意味合いで、念のため。

念のためコピーしておく
※13 念のためコピーしておく

これで安心してデータをこねくり回すことができます。
では「区切り位置」、使ってみましょう。 まず、B列(コピった方)を選択してください※14。 「区切り位置」を使うときは、必ず範囲を選択してから使ってくださいね。
で、B列を選択したら、リボンの「データ」から「区切り位置」を使います※15

範囲選択は重要です
※14 範囲選択は重要です
データ→区切り位置
※15 データ→区切り位置

すると、こんな画面になります※16

区切り位置指定ウィザード
※16 区切り位置指定ウィザード

「データのファイル形式を選択してください」とあります。 選択式になっていますが、今回は上側の「カンマやタブなどの~」を選んでください。 今回スペースのところでセルを切りたいので、一見すると下の「スペースによって~」なのかな?と考えちゃうかもしれませんが、スペースもひとつの文字と考えてください。 下側の「スペースによって~」は、指定した文字数、例えば左から3文字目とかで、機械的にぶった切る場合に使うものです。 けど、都道府県名って、3文字のところもあれば4文字のところもある。 それに今回は、都合良くあいだにスペースがあるので、スペースの前後で切ってくれるよう指定したいのです。 なので、上の「カンマやタブなどの~」のままで、「次へ」。

2番目の画面
※17 2番目の画面

次に、区切る文字を選びます※17。 デフォルトの設定では「タブ(Tab)」になっています。
今回はスペースのところで区切りたいので、「スペース」を選択してください※18。 すると、下側の「データのプレビュー」のところに、スペースで区切られたあとのイメージが表示されます。確認しておいてください。
ついでに、区切り文字の「タブ」、外しておきましょう。 これも実は、セル内の文字にタブが含まれていないので不要な作業なのですが、なんとなくで仕事しない、余計なチェックを入れない、という教育的な意味で、外すことにします。
スペースだけにチェックを入れたら、次へ。

区切り文字はスペース
※18 区切り文字はスペース

次の画面。区切ったあとのセルの書式を選ぶ画面です。 が、今回は標準の書式で良いでしょう。 そのまま完了でOKです※19。 うまくいきましたか?※20

書式選択
※19 書式選択
できました
※20 できました

ちゃんとスペースの前後で分けられていますね。 確認しておいてください。

関数で分ける

ハイ次! 練習その3※21

練習その3
※21 練習その3

今度はあいだに空白がありません。ぴっちり詰まってます。 これをやっぱり、都道府県とそれ以下で分けたい。どうしましょうか。
 ・
 ・
練習その2みたいに、特定の文字(ないしスペース)が入っていれば、分けるのはカンタンなんですよ。 でも今度は、「ココで区切って!」と目印になるものがない…。
そもそも都道府県って、「青森県」など3文字のところが多いけど、「神奈川県」「和歌山県」みたいに4文字のところもあるし、じゃあ「○○県」の「県」のところで切ればよいかって言うと、「北海道」「東京都」「大阪府」「京都府」は、おしりの文字が違う。 ひとつのルールでまとめられないんですよ。困りました。
 ・
 ・
こういうときにどうするか。 長考してウンウン唸って、良いアイデアがでるなら悩むのも「アリ」です。 でも、もし「悩むより手を動かした方が早いかも…」と判断するなら、愚直でもいいから前に進む、という道もあります。
例えば、
1.「区切り位置」を使って、とにかく左から3文字目でぶった切る
2.そのうえで、「神奈川県」みたいな4文字のところを目で探して、手作業で分ける
というプラン。 あまりスマートではないですが、時間とか現在の自分の技量とか総合的に考えた結果、このやり方でとにかく進める、というのも全然アリだと思います。 問われているのは結果ですからね。
このプランで一回やってみましょうか。 区切り位置を使います※22

区切り位置 今度は下の「スペースによって~」を選ぶ
※22 区切り位置 今度は下の「スペースによって~」を選ぶ

今度は下の「スペースによって~」を選択します。 そうして次の画面へ※23

左から3文字目
※23 左から3文字目

フィールドの幅を指定する画面になります。 下側のプレビューで、左から3文字目のところを選択してください。 すると、区切り線が引かれます。
次の画面でセルの書式をどうするのか聞かれますが、ここは今回も標準で良いでしょう。 完了です※24

ぶった切った
※24 ぶった切った

あとは、4文字の県名を手で直していきます※25

あ、「県名」で並べ替えれば効率的だったかも… そうすれば同じ県名が上下に並ぶから
※25 あ、「県名」で並べ替えれば効率的だったかも… そうすれば同じ県名が上下に並ぶから

画面の黄色セルみたいなところですね。 「神奈川」で切られているので、ちゃんと「神奈川県」に直してください。
このやり方で、あまりスマートではないですが、なんとか都道府県を分けることができます。

え? もっと効率的なやり方はないかって?
 ・
 ・
4文字の都道府県って全部言えます? …「神奈川県」「和歌山県」「鹿児島県」ですね。 あとは3文字です。 このことがわかっていれば、道は開けるかも。 上記3県だけleft関数を使って左から4文字を引っ張ってくる、残りは左から3文字、とやれば。 あとは、左から4(ないし3)文字除いた残りを引っ張ってくる方法を考えれば、イケそうですよね。

まず、「神奈川県」で始まるセルを抽出しましょう。 フィルタをかけてください※26

データ→フィルタでフィルタをかける
※26 データ→フィルタでフィルタをかける

フィルタで絞り込むのは元々あった「合体住所」です。
で、いつもは下の一覧からチェックを付けたり外したりして抽出するのですが、今回は「テキストフィルタ」ってやつを使います。 画面の「テキストフィルタ」にマウスを合わせ、「指定の値で始まる」を選んでください※27 ※28

フィルタで絞り込む
※27 フィルタで絞り込む
「指定の値で始まる」を使う
※28 「指定の値で始まる」を使う

コイツを使うと、「○○で始まる文字」や「○○で終わる文字」、「○○と等しい(完全一致)」や「○○を含む(部分一致)」、はたまた応用的に、「○○で始まらない」や「○○で終わらない」も抽出することができます。
今回はひとまず「神奈川県」で始まる文字を抽出したいので、「○○で始まる」を入力するボックスに「神奈川県」と入れます※29。 これで、「神奈川県~」で始まる住所が抽出されます※30

神奈川県で始まる
※29 神奈川県で始まる
「神奈川県」で始まる住所一覧
※30 「神奈川県」で始まる住所一覧

「神奈川県」で始まる住所がずらっと並びましたね。
では、式を入れます。 使う関数はleftmidです。 …覚えてます? いちおう、使い方、おさらいしときましょうか。

・left関数 =left(取り出す元となるセル , から何文字分?)
・right関数 =right(取り出す元となるセル , から何文字分?)
・mid関数 =mid(取り出す元となるセル , 何文字目からスタート? , 何文字取り出す?)

ついでなのでrightも書いておきました。 まあ、今回は使わないのですが…。
ではまず住所の左側、県名の方からもってきます。 今回は「神奈川県」なので、4文字ですね。 なので、

=left(A17,4)

と入れてください※31 ※32

leftで4文字もってくる
※31 leftで4文字もってくる
「神奈川県」を引っ張ってこれた
※32 「神奈川県」を引っ張ってこれた

右は、mid関数を使います。 mid関数は、上にも書いた通り、=mid(取り出す元となるセル , 何文字目からスタート? , 何文字取り出す?)という形なので、

=mid(A17,4+1,len(A17)-4)

と入れてください。
「何文字目からスタート?」は、「神奈川県」の次から引っ張ってきたいので、4+1となります。
後半はちょっと難しいですが、len関数で全文字数を割り出して、そこから「神奈川県」の文字数4を引く、という手法で※33 ※34

4+1文字目から後ろ全部
※33 4+1文字目から後ろ全部
できた
※34 できた

うまくいったみたいですね。
そしたら式を、フィルタをかけてある全セルにコピーしてください※35

「神奈川県」で始まる全セルに式を入れる
※35 「神奈川県」で始まる全セルに式を入れる

「神奈川県」で始まるセルはこれでOKです。
「和歌山県」「鹿児島県」も同様にしてください。 テキストフィルタで抽出して式を入れる。 ちなみに、「鹿児島県」で始まるセルは今回ありません。 あしからず。
 ・
 ・
これで、4文字の県名は引っ張ることができました。 フィルタを解除するとこんな感じ※36です。

あとは、空いたセルを処理すれば…
※36 あとは、空いたセルを処理すれば…

あとは、式の入っていないセルです。 さっき式を埋めた列(画面のD列)のフィルタを開き、「空白セル」を選んでください※37

空白セルだけにする
※37 空白セルだけにする

今度は、左から3文字を引っ張れば良いんでしたね。 なので、さっきの式の「4」のところを「3」に変えて、入れてください※38 ※39
今回は式を全文紹介したりしないですよ(笑)。 いじわるじゃなくて、教育です、教育。
式を入れたら、空白セル全部にコピペしてくださいね※40

左は、=left(A2,3)
※38 左は、=left(A2,3)
右は、=mid(A2,3+1,len(A2)-3)
※39 右は、=mid(A2,3+1,len(A2)-3)
式を埋める 結果、3文字引っ張る式と4文字引っ張る式が入ったことになる
※40 式を埋める 結果、3文字引っ張る式と4文字引っ張る式が入ったことになる

これで、式を全部埋めることができました。 フィルタを解除して、値貼り付けすれば完成です※41。 ふう。

値貼りすれば完成
※41 値貼りすれば完成

ハイ、今回はこんな感じです。 けっこうやること多かったですね。 とにかく、一度くっついちゃったものを分けるのは、なかなかむずかしいんです。 そのことだけでも覚えておいていただけたら。 ということで、シーユーアゲン!

おまけ:「市」で切り離す

ハイ、以下おまけ。
都道府県じゃなくて、「市」とか「区」で切り離したい、ってとき、どうするか。
ちょっとむずかしいので、余裕のある方はやってみてください。

せっかくなので、さっき切り離した都道府県以下の住所でやってみましょうか。
でね、まず、式を入れてどうこうする前に、まずざっと眺めてほしいんですよ、住所全体を。
すると、
 ・
 ・
まず、当然と言えば当然なのですが、「市」の文字数ってバラバラなんですよね。 都道府県名だと「だいたい3文字、多くて4文字」なのですが、そんなふうになっていないわけで。 困りました。
…そしてさらに。「市」で区切れそうなところもあれば、「市」を含まない住所もありますよね。 「渋谷区」とか。
こういうところは、「"市"で分ける」って統一ルールで対応できないところだから、後で分け方を考えないといけないな、ということがわかります。 こういうイレギュラーを把握するために、まず通覧することが大事なのですよ。
まあとりあえず、まず「市」を含むところだけ抽出しましょう。 フィルタで抽出するのですが、今回は簡易的なテキストフィルタを使います。 ↓画面のところに「市」と入力してください。 「市」を含む住所が抽出されます※42

「市」を含む住所だけにする
※42 「市」を含む住所だけにする

んで、「市」がどこにあるか割り出したい。 今回はfindって関数を使います。 …find、「見つける」って意味ですね。 find関数の使い方は、

・find関数 =find(検索する文字 , 対象セル)

となっていて、「検索する文字」をチョンチョン(ダブルクォーテーション)で囲ってやれば、それが左から何文字目にあるか割り出してくれる関数です。 つまり、コイツを使って左から何文字目で切り離すか割り出して、それであとは都道府県と同様にleftとmidで分けちゃおう、というワケ。
なので、「市」が何文字目にあるか割り出す列を設けて(画面のF列)、そこに、

=find("市",E2)

と入れてください※43。 対象セルは「会津若松~」なので、「市」は左から5文字目。 なので「5」という数字が返ります※44

=find(市,対象セル)
※43 =find("市",対象セル)
「会津若松市」だから「5」
※44 「会津若松市」だから「5」

うまくいきましたでしょうか。
そしたら、find式をコピーします※45

式をコピー
※45 式をコピー

それぞれ、3文字目だったり4文字目だったり、「市」の位置が割り出せましたね。 「市」を含むところはとりあえずこれでOK。
そしたら、いったんE列のフィルタを解除して、F列でまだ式を入れてないところ(空白セル)をフィルタで抽出してください※46。 今度はココに式を入れますよ。

F列残りの空白セル
※46 F列残りの空白セル

そしたら、コイツらはもう「市」を含まない住所なワケですよ。 なので今度は、「区」で区切りましょう。 =find("区",E4)と式を入れてください※47

=find(区,対象セル)
※47 =find("区",対象セル)

で、この式を空白のところにコピーするんだけど…※48

#VALUE!
※48 #VALUE!

エラー(#value!)になってる箇所がある。 トホホ…。
…このエラー箇所は要するに、「"市"も"区"も含まない」んですよ。 ちょっと、フィルタで見ていきましょう※49 ※50

#value!のところだけフィルタ
※49 #value!のところだけフィルタ
ん? 「郡」で区切れそうだぞ…
※50 ん? 「郡」で区切れそうだぞ…

…エラーのところだけ見ていくと、どうやら「郡」のところで区切れそうですね。 なので、今回はコイツら、「郡」のところで区切っておきますか。
ということで、もう一回find使います。 今度の検索文字は「郡」です※51 ※52

=find(郡,E17)
※51 =find("郡",E17)
エラーがなくなった
※52 エラーがなくなった

これで、エラーがなくなりましたね。 フィルタを解除して、全セルにしておいてください。 いよいよ切り離す式を入れます。

でね、再びleftとmidで切り離すんですが、今回、F列の数字の位置で切り離したいんですよ。 なので、入れる式としては、
=left(E2,F2)
=mid(E2,F2+1,len(E2)-F2)
と、さっきfindで割り出した数字を参照するようにしてください※53 ※54

左から何文字目?はF列を参照 =left(E2,F2)
※53 左から何文字目?はF列を参照 =left(E2,F2)
同じくF列を使う =mid(E2,F2+1,len(E2)-F2)
※54 同じくF列を使う =mid(E2,F2+1,len(E2)-F2)

midの第2引数、「何文字目からスタート?」のところで、F列の値にプラス1するのがポイントですね。
というわけで、あとは式をコピーすればひとまず完成なのですが…※55

とりあえず機械的に割り出した
※55 とりあえず機械的に割り出した

…でもね、うまくいってないところもあるんです※56。 ↓画面の黄色いセル。

「市原市」とか「廿日市市」とか、関数では拾いきれないところもある
※56 「市原市」とか「廿日市市」とか、関数では拾いきれないところもある

うまくいかないのは、「」とか「廿日」といった、検索文字が2回出てくるところ。 find関数は、検索文字が2回出てくると、1回目のところで止まっちゃうんですよ。
でね、これはもう、しょうがない。 こういうところは、目検と手作業でなんとかちまちま直していきましょう。 でも、関数で8割9割引っ張ってこれたなら良しとしていただけないでしょうか。 どうでしょうか。

Copyright(C)森田表計算