Posts

Showing posts from August, 2020

DTPでよく使うエクセル関数の使い方を丁寧に紹介【IF関数・LEN関数・RIGHT関数】

Image
はじめに 前回は、文字列中の文字を抽出するMID関数を解説しました。

今回は、道府県名を取り出す方法を例に、条件ごとに作業を分けるIF関数、テキストの文字数を調べるLEN関数、右端からの文字を抽出するRIGHT関数、を解説します。

実は、意外に簡単です。
というのも、道府県名はパターンが非常に少ないので、この場合あの場合その場合…、と条件による取り出し方も非常にコンパクトになります。

目次IF関数―条件ごとに作業を分けるLEN関数―テキストの文字数を調べるRIGHT関数―右端からの文字を抽出道府県名の文字数のパターンを調べる郡市区町村名の1文字目に「県」があるか住所から都道府県名を取り出す住所から郡市区町村以下を抜き出す
IF関数―条件ごとに作業を分ける IF 関数を使うと、条件をテストして結果 (True または False) を返すことにより、値と予想値の間の論理的な比較を行うことができます。

=IF(条件が True であればある処理を行い、それ以外の場合は別の処理を行う)参照:IF 関数 - Office サポート 例1:
B2:千葉県
=IF(B2="千葉県","そうです","違います")
結果:そうです
LEN関数―テキストの文字数を調べる 文字列の文字数を返します。

=LEN(文字列)文字列    必ず指定。 文字数またはバイト数を調べる文字列を指定します。 スペースは文字として数えられます。
参照:LEN 関数、LENB 関数 - Office サポート 例2:
B2:千葉県
=LEN(B2)
結果:3

RIGHT関数―右端からの文字を抽出 文字列の末尾 (右端) から指定された文字数の文字を抽出します。

=RIGHT(文字列[,文字数])文字列    必ず指定。 (A2などのセル名や"あいう"などの文字)を指定します。
文字数    省略可能。 取り出す文字数 (文字列の末尾からの文字数) を指定します。
参照:RIGHT 関数、RIGHTB 関数 - Office サポート 例3:
B2:千葉県■市▲町12-34
=RIGHT(B2,9)
結果:■市▲町12-34
道府県名の文字数のパターンを調べる道府県名とその文字数は以下の通り。



表を見ると分かりますが、文字数が4の都道府県は

DTPでよく使うエクセル関数の使い方を丁寧に紹介【文字列中の文字を抽出するMID関数】

Image
前回のブログで、LEFT関数を紹介しましたが、文字列の途中の文字を抜き出したい場合は、MID関数を使います。

今回は、そのMID関数の使い方を紹介します。
目次LEFT関数のおさらいMID関数FIND関数のおさらい住所から県名・市名を抽出する LEFT関数のおさらい前回紹介しましたが、今一度ここでおさらいをしておきます。

LEFT関数は、文字列の左端から指定された数の文字を抽出します。 =LEFT(文字列[,文字数])
文字列    必ず指定。 取り出す文字を含む文字列(A2などのセル名や"あいう"などの文字)を指定します。
文字数    省略可能。 取り出す文字数を指定します。
詳しくは、【初心者向け・DTP・InDesign用】Excelで文字の位置を調べ文字を抽出・分割する―FIND・LEFT関数 例1:
B2:千葉県■市▲町12-34
=LEFT(B2,3)
結果:千葉県 MID関数 文字列の指定された位置から指定された文字数の文字を抽出します。
=MID(文字列, 開始位置, 文字数)文字列    必ず指定。 取り出す文字を含む文字列(A2などのセル名や"あいう"などの文字)を指定します。
開始位置    必ず指定。 文字列から取り出す先頭文字の位置を数値で指定します。 文字列の先頭文字の位置が 1 になります。
文字数    必ず指定。 取り出す文字数を指定します。
参照:MID 関数、MIDB 関数 - Office サポート 例2:
B2:千葉県■市▲町12-34
=MID(B2,4,4)
結果:12-34 FIND関数のおさらい 指定された文字列を他の文字列の中で検索し、その文字列が最初に現れる位置を左端から数え、その番号を返します。
=FIND(検索文字列, 対象[, 開始位置])検索文字列    必ず指定。 検索する文字列を指定します。
対象    必ず指定。 検索文字列を含む文字列を指定します。
開始位置    省略可能。 検索を開始する位置を指定します。 対象の先頭文字から検索を開始するときは 1 を指定します。 開始位置を省略すると、1 を指定したと見なされます。
詳しくは、【初心者向け・DTP・InDesign用】Excelで文字の位置を調べ文字を抽出・分割する―FIND・LEFT関数 例3:
B2:千葉…

DTPでよく使うエクセル関数の使い方を丁寧に紹介【まとめ】

Image
はじめに注意:関数の挙動についてはMac版Excelでの確認になります。Windows版については動作確認をしておりません。予めご了承ください。
DTP業界に従事していて、Excelを使ってのテキストの整形作業を行っている人はどれだけいるのかわかりませんが、自身はかなり多用しています。

筆者の仕事は、そうした方が効率的な内容のものだからです。
それらは、InDesignで「データ結合」することを前提としています。

名刺の大人数発注DMなどの宛名印字情報を冊子用テキストに変換
上記の上2つは、Excelで作成された名簿・個人録・一覧が、顧客より渡される場合が多くあります。そのテキスト類をExcel関数で加工し、レイアウトフォーマットに適合するようにします。
3番目は、予め関数を組み込んだExcelを顧客に渡し、それに必要なテキストを入力してもらいます。そして、入力されたテキストを別シートへ、関数で加工しながら読み込み、レイアウトフォーマットに適合するようにします。
これをすることで、作業効率は飛躍的に向上します。
手作業がほぼ無くなるので、反復作業から解放されます。

Excel関数での処理の考え方Excel関数を使用することで、作業に伴うリスクを極力抑えることもできます。
テキストを手作業で加工する必要がなくなる。
→加工ミス、加工し忘れ、コピペミス、などのリスクを避けられる原稿自体を触る必要がなくなる。
→ミスがどこの段階で発生したかが分かる関数は原稿を参照するだけで、原稿を変更することはないからです。

目次―使用頻度の多い関数DTPでよく使用する関数は、テキスト整形に関係するものになります。 以下に、よく使用する関数の一覧を挙げています。リンクから、各関数の使い方を紹介しているページへ行ってみてください。
ADDRESSANDASCCHARCLEANCOLUMNCONCATCONCATENATECOUNTIFFINDIFIFSINDIRECTISBLANKISERRORISINDEXJISLEFTLENMIDNOTORROWRIGHTSUBSTITUTETEXTJOINTRIMVLOOKUP


DTPでよく使うエクセル関数の使い方を丁寧に紹介【文字位置を調べるFIND関数と文字を抽出するLEFT関数】

Image
テキスト整形用関数の紹介第3弾は、文字列内のある文字の位置を知る関数と、文字を抜き取る関数となります。
目次はじめにFIND関数LEFT関数住所からビル名を除いたものを取り出す具体例 はじめに文字の位置を調べるFIND関数文字列の左端から指定された数の文字を調べるLEFT関数 これらは、テキスト整形においては単独で使用することは余りなく、2つを組み合わせて使用することが多い関数です。
使用する場面は、あるセル中の文字列のある文字の直前までの文字列を抽出する場合です。
具体例として、スペースなどが挿入された、ビル名まで入力された住所の内、ビル名を除いた住所を取り出したい時など。
ではどのように2つの関数を組み合わせて使用するのかを見ていきましょう。 ある文字の位置を調べるFIND関数 FIND関数は、指定された文字列を他の文字列の中で検索し、その文字列が最初に現れる位置を左端から数え、その番号を返します。 FIND 関数では、既定の言語の設定に関係なく、1 バイト文字も 2 バイト文字も、各文字が常に 1 つとして数えられます。
FIND関数の書式は以下の通りです。 =FIND(検索文字列, 対象[, 開始位置])
「検索文字列 」必須。 検索する文字列を指定します。
「対象 」必須。 検索文字列を含む文字列を指定します。
「開始位置」省略可能。 検索を開始する位置を指定します。 対象の先頭文字から検索を開始するときは 1 を指定します。 開始位置を省略すると、1 を指定したと見なされます。
参照:FIND 関数、FINDB 関数 - Office サポート 使用例は以下の通りです。 例1:全角スペース(全角アキ)の位置番号を調べる
A2:山田 花子
=FIND(" ",A2)
結果:3
例2:半角スペース(半角アキ)の位置番号を調べる
B2:東京都港区麻布百番100-100 山田百番ビル
=FIND(" ",B2)
結果:17
例3:ハイフンの位置番号を調べる
C2:000-0000
=FIND("-",C2)
結果:4
文字列の左端から指定された数の文字を調べるLEFT関数 LEFT関数は、文字列の先頭(左端)から指定された数の文字を返します。

LEFT関数の書式は以下の通りです。

=LEFT(文字列[,文字数]…

DTPでよく使うエクセル関数の使い方を丁寧に紹介【文字列を結合する関数:CONCATENATE・CONCAT・TEXTJOIN】

Image
テキスト整形で、「置換」と同じくらいによく行うのが「結合」です。
ですが、実は「結合」の関数は何種類かあり、また関数を使用しない方法もあるのです。
目次CONCATENATE関数テキスト結合演算子「&」CONCAT関数TEXTJOIN関数まとめ CONCATENATE関数 現在最も一般的な「結合」の関数は、CONCATENATEになります。

CONCATENATEの書式は以下の通りです。
=CONCATENATE(文字列1[,文字列2], ...,[,文字列255])
「文字列1」は必須項目
「文字列2」以降は省略可能
「文字列X」には、テキスト値、数字、セル参照のいずれかを指定。Xは255まで指定可能。
※セル参照:セルA1とかセルB2などのA1やB2のこと。
参照:CONCATENATE 関数 - Office サポート 使用場面としては、住所が「都道府県」「市区町村」「町名」が予め分割されて入力されている時に、印字はすべてつながった状態にしたい場合などによく使います。
例1
C2:東京都 D2:港区 E2:麻布百番 F2:100-100 G2:山田百番ビル
=CONCATENATE(C2,D2,E2,F2,G2)
結果:東京都港区麻布百番100-100山田百番ビル
住所とビル名の間に半角アキを入れたい場合は、
=CONCATENATE(C2,D2,E2,F2," ",G2)
結果:東京都港区麻布百番100-100 山田百番ビル
と、関数内の「F2」と「G2」との間に「," "」(半角コンマ"半角アキ")を挿入すればよいのです。
テキスト結合演算子「&」 実は、関数を使用しなくても結合は出来てしまいます。
それは、「&」を使用することです。

この「&」はテキスト結合演算子といい、CONCATENATE関数と同じテキストの結合をします。
例2
A2:山田 B2:花子
=CONCATENATE(A2,B2)
結果:山田花子
と、CONCATENATE関数を使用しても構いませんが、
例3
A2:山田 B2:花子
=A2&B2
結果:山田花子
の方が簡単です。

CONCATENATE関数を使用するか「&」(テキスト結合演算子)を使用するかは、好みの問題かなと思います。

今説…

DTPでよく使うエクセル関数の使い方を丁寧に紹介【文字列を置換するSUBSTITUTE関数】

Image
テキストの一部分を置換したい―SUBSTITUTE関数Excel原稿が顧客から送られてきたら、まず最初に確認しておきたいのが、入力されたテキストが統一されているかどうか、です。
「スペース」を例にしますと、「氏名」の「氏」と「名」の間にスペースの入っていることが多いかと思います。
このスペースが半角、全角どちらかで統一されているかどうか。
下手をすると、全角スペース1つかと思ったら半角スペース2つだったりすることもあります。
1つのExcelを1人で入力する場合でも、複数の人間が入力する場合でも、入力の不統一はよくあることです。

ただ、入力が統一されていないと、完成レイアウトは不統一で不細工になります。

このような不統一を解消するために、不統一部分を統一したものに差し替える作業をすることになります。

それをするのが、テキストを置換するSUBSTITUTE関数になります。

SUBSTITUTE関数の書式は以下のようになります。
=SUBSTITUTE(元の文字列,検索する文字列,置き換える文字列[,位置]) SUBSTITUTE関数のカッコ内の各文字列には直接文字を入れるか、セルを指定するかします。直接文字を入れる場合は「"置換"」のように「""」で囲みます。
例1:A1セルのテキストの「痴漢」を「置換」に差し替える。
A1:この文字列を痴漢します。
=SUBSTITUTE(A1,"痴漢","置換")
→この文字列を置換します。

SUBSTITUTE関数の書式の最後にある[,位置]は、対象テキスト内に同じ文字列が複数ある場合に、テキストの左から何番目の文字列かを指定することができます。
例2:A1セルのテキストの左から3番めの「痴漢」を「置換」に差し替える。
A1:この文字列を痴漢して痴漢され痴漢いたします。
=SUBSTITUTE(A1,"痴漢","置換",3)
→この文字列を痴漢して痴漢され置換いたします。

他に、REPLACE関数というものがありますが、自分の実務経験上使用する場面はありませんでしたので紹介に留めます。(REPLACE 関数、REPLACEB 関数 - Office サポート

この関数は

Macに付属の「Numbers」Googl…

Excelで住所から政令指定都市名と行政区名を一括りで分割する方法【DM・宛名シールなどの印字の準備のために】

Image
はじめに 関数で一括で郡市区町村名を取り出すのに苦労することが多いこの問題、以前取り上げた道府県名東京都+特別区郡町名郡村名を住所から順次抜き出した後、次に「政令指定都市と行政区」を分割・抽出します

さて、なぜ「政令指定都市と行政区」とひとまとまりで抜き出すのか。
「市」と「区」とで別個に抜き出せば政令指定都市以外の市も一緒に取り出せて手間が省けるのではないか。
そう思われるかも知れません。

実は、「区」を行政区画として使用しているのは政令指定都市だけではないのです。


「地域自治区」という、最近出来た区画。(例:上越市安塚区)地域名としての「町名」の頭に「●●区」と付けられた地域名としての一部名称(例:姫路市飾磨区)

他にも法律上、「区」を付けられることがありますが、現在住所表記上存在するのは以上の2つになります。

そして「政令指定都市と行政区」はひとまとまり、上越市や姫路市などは区と別個にするのか?

それは便宜上、郵便番号の区分を踏襲するからです。
後は慣例的にこのように分割した方が良いと判断しました。

というわけで、今回は「政令指定都市と行政区」をひとまとまりで抜き出す方法を紹介いたします。

目次政令指定都市名と行政区名を調べる住所から郡村名を抜き取る
政令指定都市名と行政区名を調べる道府県名、東京都+特別区、郡町名、郡村名を取り出したので、「政令指定都市名と行政区名」は住所の最初から何文字かまでになります。
COUNTIF関数で「市」「区」が各々n文字目にある時、LEFT関数でn文字取り出せば良いことになります。

最初に、全ての政令指定都市名と行政区名を収集します。

政令指定都市名と行政区名一覧は次の通り。

政令指定都市名と行政区名一覧
以下のサイトで調べました。

データベース検索(都道府県市区町村)
次に、政令指定都市名と行政区名内に「市」「区」が使用されていたら政令指定都市名と行政区名を抜き出すのが難しくなるので、政令指定都市名と行政区名内に「市」「区」が使用されているかどうかを、前記の「政令指定都市名と行政区名一覧」で調べます。

政令指定都市名と行政区名内に「市」「区」が使用されているかどうかを調べる関数は以下の通り。

政令指定都市名内に「市」「区」が使用されているかどうか
=IF(COUNTIF(I2,"*市*市*"),"…