其ノ2 文字列を操作する
ハイ、第2回です。
実は、このページの一番上に水平に走っている緑のバーに、その回のトピックを置いています。
今回のトピックは「left関数」「right関数」「mid関数」、そして「text関数」。
…4つも出てきてしまいましたが、「left関数」「right関数」「mid関数」はそれぞれ、「文字列の左を取り出す」「右を取り出す」「真ん中を取り出す」関数です。
で、「text関数」は、文字列(テキスト)を特定のかたちに変化させる関数です。
今回も練習問題を用意してありますので、以下からダウンロードお願いします。
開くとこんな↓です※1。
シートが3枚あります。 じゅんばんに練習していきましょう。
left関数、right関数
ハイ、では最初の課題※2。 1枚目のシートを見てください。 「left_right」って名前のヤツね。
ではまず、一番上の問題。
郵便番号を、-(ハイフン)の前後で分けたいな、と。
つまり、「182-0022」だったら、「182」と「0022」に分けたい。
ハイ、では、やってみましょう。
郵便番号は必ず7文字と決まっていて(ハイフン入れても8文字)、ハイフンの左は3文字、右は4文字という作りになっています。
だから、左から3文字分、右から4文字分を取り出してやればよい。
こういうときに使える関数が、「left関数」「right関数」です。
ちょっとやってみましょう。
画面見ながらついてきてくださいね。
まず、左3文字から。
セルに「=left(」と入れてください※3。
次に、ナビゲーションに「文字列」と出ていますが、取り出す元となるセルを選択します。 この場合だと「182-0022」のセル、つまりB2セルを選択します※4。 マウスでクリックでも、矢印キーで移動でも良いですよ。
セル選択できたら、半角カンマで区切って、次に欲しい文字数を入力します。 今回欲しいのは左から「3」文字分ですので、「3」を入力します※5。
かっこを閉じれば、完成です※6 ※7。
続いて右側も行きましょう。
right関数を使います。
まず、決まり文句として「=right(」と入れて、んで、元となるセルを選んでください※8。
右から「4」文字欲しいので、「4」を入力します※9。
かっこを閉じれば完成です※10。
できました?
では、解説。
left関数とright関数のつくりは、こんなふうに↓なっています。
・left関数 =left(取り出す元となるセル , 左から何文字分?)
・right関数 =right(取り出す元となるセル , 右から何文字分?)
式のつくりはleftもrightも同じです。
最初の「left」「right」の部分がちがうだけです。
文字を取り出す仕組みは、こんな↓感じです※11。
なんとなく、わかっていただけました? left関数は「左から何文字」、right関数は「右から何文字」取り出すんですよ。
では、郵便番号の残りもやっつけていきましょう。 ま、式をコピペすればいいんだけど※12 ※13。
ハイ次行きます。
会員番号。
コイツを、左1文字と右3文字に分けたい。
やってみてください。
こうなりますね※14 ※15。
以下、式をコピーしてやればOKです※16。
名字が2文字、名前も2文字、とわかっていれば、名字と名前を分けることもできます※17 ※18 ※19。
…でも、このやり方だと、名字が「伊集院」とか「勅使河原」のとき単純なコピペじゃ対応できないんだよね。
抜き出す文字数を変えなきゃいけない。
幸い、今回のデータの場合、名字と名前のあいだに空白があるので、空白のところで分ければよいんだけど、そのやり方は次回、其ノ3で。
ひとまず、leftとrightの練習でした。
次、行きましょう。
mid関数
2枚目のシートに進みましょう。 「mid関数」って名前のヤツです※20。
まず、ひとつめの問題。
今度は、会員番号を3つに分けたい。
つまり、「926-1333-595」だったら、「926」と「1333」と「595」に分けたい。
左3文字と右3文字は、もう抜き出せますよね※21 ※22。
問題は真ん中4文字ですね。
真ん中の文字は、mid関数で取り出しましょう。
mid関数の使い方は、こんな↓感じです。
・mid関数 =mid(取り出す元となるセル , 何文字目からスタート? , 何文字取り出す?)
leftやrightよりちょっと複雑ですね。
というのも、指定する数が1つ増えているからです。
…まあ、とりあえずやってみましょうか。
まず、「=mid(」と入れてください※23。
で、対象となるセルを選びます※24。 ここまでは、leftやrightと同じですね。
セル選択できたら、半角カンマで区切ってください。
次の入力に移ります。
次は、「何文字目からスタート?」を入力します。
今回欲しいのは、「926-1333-595」の「1333」ですね。
さて、では、「1333」の「1」は、何文字目ですか?
…いち、にー、さん、しー、ごー、5文字目ですね。
-(ハイフン)も1文字と数えるんですよ。
ということで、「5」を入力してください※25。
オーケー?
「5」を入力したら、また半角カンマお願いします。
次に入力するのは、「そこから何文字取り出すか?」です。
われわれが欲しいのは「1333」の4文字なので、「4」と入力します※26。
かっこを閉じれば完成です※27 ※28。
できました?
…leftやrightより、ちょっとむずかしいですよね。
数字の指定の仕方も、ちょっとクセがあるし。
ちょっと、解説しときましょうか※29。
数字を2つ指定しないといけないところがむずかしいですね。
しかも、「何文字目からスタート?」と「何文字取り出す?」で、1文字かぶってる(上画像でいうと「926-1333-595」の「1」のところ)が混乱の元…。
とりあえず、指さしでもしながら数えて、きっちり指定してあげてください。
まず「何文字目からスタート?」を指定して、で、次に「そこから何文字取り出す?」、ですよ。
じゃあ、残りもやってみますか。 …と言っても、コピペすれば解決するんだけど※30。
上手いこと、真ん中の文字を取り出せたみたいですね。
よしよし。
では続けて次の問題。
以下の住所を、「都道府県」と「市」と「町」に分けたい。
つまり、「東京都調布市国領町」だったら、「東京都」「調布市」「国領町」に分けたい。
・
・
上の応用でやってみましょうか。
まず都道府県から※31。
「東京都」なんで、左から3文字引っ張ってやればよい。
次。
真ん中※32。
…そう。
「東京都調布市国領町」から「調布市」を抜き出すわけだから、4文字目から3文字分指定してやればよい。
つまり、=mid(B10,4,3)が正解。
ハイ最後。
右の3文字※33。
できましたか?
じゃあ、以下も同様な感じでお願いします。
とりあえず、式をコピーでイケるかな…※34 ※35 ※36。
おおっと!
「宇都宮市」がうまく引っ張ってこれてませんね。
というのも、「宇都宮市」は4文字だからです。
なので、ここは式のコピーでは対応できません。
式を入れなおしてあげてください※37。
住所を切り分けるのはむずかしいんですよ。 文字数が不規則ですから。 都道府県名でさえ3文字のところもあれば4文字のところもある(鹿児島県など。今回はたまたま全部3文字ですけど)し、市の名前なんて文字数決まってるわけじゃないですからね。 だから、今回のように文字数で規則的にもってこようとするのははじめから無理があったりするのですが、ま、勉強としてやってみました。 なので、こういうこともあるということ、覚えておいてください。
mid関数は「何文字目から何文字分」という指定の仕方をしますね。
このとき、「1文字目から」とすると、left関数と同じはたらきをします。
つまり、=mid(B2,1,3)は、=left(B2,3)と同じ機能を果たします。
…この話、ちょっとした余談なのですが、VBAなんか組むようになったときもしかしたら役に立つかもしれませんので、頭の片隅に置いておいてください。
ハイ次。
次は、住所を「都道府県」と「そこから先全部」に分けたい。
つまり、「東京都調布市国領町」だったら「東京都」と「調布市国領町」に、「栃木県宇都宮市鶴田町」だったら「栃木県」と「宇都宮市鶴田町」に分けたい。
はて、どうしましょうか。
・
・
とりあえず、都道府県は今回全部3文字なんで、さっきと同様で大丈夫なんですが※38。
問題はそこから先ですよね。
「調布市国領町」だと6文字、「宇都宮市鶴田町」だと7文字…、と、それぞれ引っ張る文字数が異なります。
だから、まじめに1コ1コやろうとするとこう↓なりますよね※39 ※40。
…まあ、これでも悪くはないんだけど、これが100コとかあったら途中でイヤになっちゃいますよね。
ということで、もうちょっと工夫してみましょう。
まず、文字数が何文字あるか調べる関数を入れてみましょうか。
len関数といいます。
使い方はこう↓です。
・len関数 =len(対象セル)
len関数は数字の指定とかはないです。
対象セルを選択するだけです。
さっそく使ってみましょうか。
C18セルに「=len(」と入れてください※41。
次に、対象セルを選択します。 今回の場合は隣のセル、B18ですね※42。
あとはかっこを閉じてやるだけ。 「東京都調布市国領町」の文字数が出ます※43 ※44。
式をコピってやると、こんな↓感じになります※45。
len関数の「len」とは「length」、「長さ」って意味の英語です。
少し、覚えやすくなりましたか?
使い方としては、対象セルを選択するだけです。
leftやmidみたいに、数字を指定することはありません。
さて、実はlen関数はこれから先のための準備でして。
今、len関数で住所の全文字数を割り出しました。
では、ここから都道府県の文字数3を引くと?
…そう、われわれが求める、市区町村以下の文字数になるのです。
では、mid関数を少しいじってやりましょう。
とちゅうまでは同じです。
4文字目から、ってところまでは※46。
変えるのはここからです。
まず、C18セル(さきほどlen関数を入れたセル)を選択し、続けて「-3(マイナス3)」とダイレクトに入力しましょう※47。
「C18-3」となるのが正解です。
あとは、かっこを閉じてやればOK※48。 うまいこと引っ張ってこれます。
さて、このやり方のいいところは、この式をコピーすれば残りの4つもイケちゃうところです※49。
なぜこうなるかといいますと…、仕組みをちょっと、まとめておきましょう※50。
つまり、1コ目の「C18-3」のところでは、「東京都調布市国領町」の文字数9から3引いた数、すなわち「6」が、埋め込まれているわけです。
そして、2コ目の「栃木県~」のところでは、「栃木県宇都宮市鶴田町」の文字数10から3引いた数「7」が、入っているんです。
以下、同様に「6(9-3=6)」、「8(11-3=8)」、「8(11-3=8)」となります。
ガッテンしていただけましたか?
…ちょっと、むずかしかったかもしれないですね。
ただね…、実は、このやり方は真面目なやり方です。
もっと不真面目に、こう↓でもいいんです※51。
こちらは-3(マイナス3)を入れてません。 つまりこのままだと、「4文字目から、9文字引っ張る」ということになってしまい、数字的にはオーバーしてしまいますが、実はこれでも式は問題なく機能します。 なぜなら、mid関数は、多く引っ張る分には問題ないからです※52。
なので、絶対100文字以上にならないようなケースでは、人によっては=mid(B18,4,100)みたいにしちゃう人もいます。
まあ、「100」みたいな決め打ちは僕はあまりオススメしてませんが…。
とりあえず、mid関数の練習は以上です。
不安でしたら、繰り返しやってみてくださいね。
text関数に触れてみる
ハイ最後! 3枚目のシート※53。
B列に1,2,3,…,100と連番が振ってあります。
これを、「001」「002」「003」…としたい。
となりは「0001」…と4ケタ数字にしたい。
さてはて。
・
・
例えばね、コレ、手作業で「001」って入力したとしましょう。
でもその場合、そのままだとダメなんですよ※54 ※55。
標準書式だと数字のアタマの「0(ゼロ)」は無視されちゃうんですよ。
だから、書式を文字列にしてやらないといけない。
右クリック→セルの書式設定→文字列としてやってください※56 ※57。
手作業でやるならこういうやり方なんですが、今回はこれを関数でやってみましょう。
text関数というのを使います。
まず、「=text(」と入れます※58。
text関数は対象セルを特定のかたちに変化させる関数です。
なので次に、変化させる元のセルを選択します。
隣のセル、B2を選択してください※59。
セルを選択したら半角カンマで区切りますよ。
次がこの関数のポイント!
「"000"」と入力してください。
「"(ダブルクォーテーション)」はshift押しながら「2」、ですよ※60。
あとはかっこを閉じれば完成です、が…※61 ※62。
アレ?
うまくいきません…。
式は合ってるはずなのに…。
…失礼失礼。
さっきセルの書式を文字列にしたのがそのままでした。
なので、書式を「標準」に戻して、もう一度関数を入れ直してください、お手数ですが※63 ※64 ※65。
今度はできました。
ちゃんと「001」になりましたね。
では、この式をおしりまでコピーしてみましょう。
おしりまでの数字がすべて3ケタになります※66。
よしよし。
この勢いで、4ケタの方も片づけましょう。
4ケタにするには、さっきの"000"のところを"0000"にします。
つまり、=text(B2,"0000")と式を入れます※67 ※68 ※69。
うまくできました?
3ケタのときはゼロ3つ、4ケタはゼロ4つですよ。
ハイ、ではtext関数のかんたん解説。
・text関数(基本) =text(対象セル , "表示形式")
・数字を3ケタにする =text(対象セル , "000")
・数字を4ケタにする =text(対象セル , "0000")
text関数は、"表示形式"のところを変えてやるといろいろできる関数なんですよ。 数字に桁区切りのカンマを入れたり、日付を曜日に変えたり、とか。 が、とりあえず今回は上の2つを覚えておいてください。 あ、上の"000"のところ、"00000"にすれば5ケタに、"000000"にすれば6ケタにできますよ、もちろん。
値で貼り付ける
すみません、最後に1コ覚えておいてほしいテクニックがあるのですが…。
例えば、さっきtext関数を入れたセルの中身をやっぱり「0009」に変えたい、としましょう。
編集するためにダブルクリックでセル内に入るのですが…※70。
見た目は「001」なんですが、中身は関数なので、そのままでは編集できないんですよ。
こういうときは、式を見た目どおりの値にする「値貼り」というテクニックを使います。
やり方はかんたん。
まず、式が入っている列を列ごと選択し、右クリック→コピー※71。
で、同じ場所にそのまま貼り付けるんですが…。
同じ場所ですよ。カーソル動かす必要ないですよ。
貼り付ける際、形式を選択して貼り付け→値とします※72。
以上で値貼りは終わり。
これをやると、さっきまで数式だったのが、見た目どおり「001」という値になります※73。
値貼りは今後頻出するテクニックなのですが、場合によっては「コピー領域と貼り付け領域のサイズが違うため、貼り付けることができません。」と言われることがあるかもしれません。 基本的には、同じ場所に貼り付けていれば問題ないとは思うのですが、もしこのメッセージが出ちゃったときは、トップの1セルだけを選んで再チャレンジしてみてください。 「トップ(上端、厳密には左上)を合わせる」ってのが、ポイントですよ。
このひと手間を加えることで、数式じゃなくて値として扱うことができますので※74 ※75 ※76。
しまった。
書式が標準のままだった。
…すみません、左上の「戻る」ボタンで一手前に戻って※77、書式を「文字列」に変更しといてください※78。
余計な手間をとらせてしまいました。
もしかしたら「めんどうだなー」って印象を与えてしまったかもしれないですが、数字を文字列として扱うのはけっこうめんどくさいんですよ、もともとExcelだと。
ですが、値貼りは今後よく使うテクニックなので、ぜひ覚えておいてくださいね。
ということで、本日はここまで。
シーユーアゲン!