投稿

ラベル(SUBSTITUTE)が付いた投稿を表示しています

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

イメージ
はじめに 顧客リストの「顧客名」に、会社名と個人名が混在している場合が多いと思います。 大抵は「顧客名」に敬称は追記していないと思います。 ですが、このリストを使ってDMや年賀状などの宛名を印字する場合、敬称が無いと失礼ですね。 では、手で一つ一つ入力していきますか? 非常に時間と手間がかかりますよね。 顧客名が個人の場合は「様」を、法人の場合は「御中」を判別して、自動的に追加したい。 でも会社名と個人名が混在していて、どう判断して追加すれば良いのか。 また法人の場合、株式会社や有限会社だけでなく、一般社団法人や財団法人などもあります。 また、(株)や(有)、(一社)、(財)など略称で記述されている場合もあります。 今回は、それらを考慮した関数を紹介いたします。 目次 COUNTIF関数―条件に合うかどうかを判断 OR関数 IFS関数―複数の条件を一括で 会社には「御中」、個人名には「様」を追加する 会社以外の法人にも「御中」を追加する (株)(財)などの略称のある顧客名にも「御中」を追加する IFS関数でまとめて処理する方法 (株)(財)などの略称を正式名称に置き換えながら「御中」を追加する COUNTIF関数―条件に合うかどうかを判断 1 つの検索条件に一致するセルの個数を返します。 また、1 つの検索条件に一致するかどうかを判断する場合にも使用します。 =COUNTIF(範囲, 検索条件) 範囲 必ず指定。検索の対象とするセルやセルの範囲が指定できます。 検索条件 必ず指定。数値、式、セル範囲、または文字列で指定できます。 参照: COUNTIF 関数 - Office サポート 例1:「会社」の付く法人名の個数 =COUNTIF(A2:A5,"*会社*") 結果:2 OR関数 いずれかの引数が TRUE と評価された場合は TRUE を返し、すべての引数が FALSE と評価された場合は FALSE を返します。 =OR(論理式1[,論理式2],...) 参照: OR 関数 - Office サポート IFS関数―複数の条件を一括で 最新版のExcelを所持している場合、こちらも使用可能です。 IFS 関数は、1 つ...

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

イメージ
テキストの一部分を置換したい―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 関...

【EXCEL関数】セル内の余分なスペースやセル内改行を一瞬で取り去りたい時の関数

イメージ
先に、結論から言うと、 CLEAN(SUBSTITUTE(SUBSTITUTE(A1," ","")," ","")) なぜこれが必要か? 自分だけでExcelに入力する分には全く必要がない代物である。 ただ、案件によって、他人に、それも組版作業を知らない人に、必要項目の入力をしてもらうことがママあって、このような場合、Excel上での見栄えを気にして、スペースを使ったインデントやセル内改行などをしてこられるのである。 こちらからとしたら、見栄えは組版でするので無駄になると言ってもしてこられるので、ナンとも。。。 スペースはまだしも、特にセル内改行は、ExcelからInDesignにコピペする時に非常に厄介。セル内改行のせいで、表が崩れまくるのである。 事故の元 である。 これを手作業で削除しても埒が明かないし、余計なものを消してしまう恐れもあるので、上記の関数を捻り出した次第。 本来なら、スペースやセル内改行以外の制御文字なども考慮に入れるべきかもしれないが、今までの傾向からしてスペースやセル内改行のみなのと、関数が今以上に煩雑になるのもなぁと思い、今回はこんな感じで落ち着いたのである。 関数の解説 CLEAN 関数 CLEAN 関数は、ASCIIコードの印刷できない先頭の32文字(10進法表記で0~31)を削除するために設計された。 Excelのセル内改行コードは、 Windowsでは、LF(ASCIIコードの10進法表記で10) Macでは、CR(ASCIIコードの10進法表記で13) であり、ASCIIコードの印刷できない先頭の32文字に含まれている。 故に、単純に、セル内改行を削除したいセルがA1とすると、CLEAN(A1)とすればよいだけ。 (詳細は、 CLEAN 関数 - Office サポート - Office Support ) SUBSTITUTE関数 SUBSTITUTE関数は、あるセル内の特定の文字列を別の文字列に置き換えるもの。 SUBSTITUTE(文字列, 検索文字列, 置換文字列, [置換対象]) (詳細は、 SUBSTITUTE 関数 - Office サポート - Office Support ) ...

【Excel関数】表の横項目を「/」を挟んで結合させようとしたら意外に大変だった、というおはなし

イメージ
ある表の、同年の項目1から項目5までの文字列を、「/」を挟んで結合させたい案件が発生した。 序でに内容のない項目(つまりは空セル)は省いて結合させたい。 具体的にはこんな感じ。 表1 コレ、以外にややこしい事になってしまった。 マクロは使わず(マクロが出来ない、が正解なのだが)、関数のみでどうにか出来ないか悪戦苦闘したからだが。 ややこしすぎて、どうやったか忘れそうなので、備忘録としてまとめてみた。 条件は、 文字列を「/」を挟んで結合させたい 空セルは省く どの項目が空セルになるかはランダム 以上の条件全てを満たす関数を組みたいのだが、懸念点は以下の通りである。 途中に空セルがある場合「/」が「//」や「///」と重なる   例)2017:「東京/大阪///奈良」 最後が空セルの場合、最後に「/」が来てしまう   例)2016:「東京//京都/神戸/」 先頭が空セルの場合、先頭に「/」来てしまう   例)2015:「/大阪//神戸/奈良」 もう何とも意図したものに出来ないのである。 ということで、地道に1づつ解説していく。 まず最初に、 文字列を「/」を挟んで結合させたい を実装する関数を考えてみる。 セルB7に結合した文字列を表示するものとする。 素直に文字列を結合すると、 B7=B2&"/"&C2&"/"&D2&"/"&E2&"/"&F2(B7=CONCATENATE(B2,"/",C2,"/",D2,"/",E2,"/",F2)に同じ) 結果:「東京/大阪///奈良」 この場合、上記懸念点で記した通り、空セルがある場合は「/」が余計に現れるのである。 今回作成する関数はひじょ〜に長いので、通常文字列を結合させる時に使用するCONCATENATE関数ではなく、「&」を使った文字列結合を採用する。 次に、空セルの場合は省き、そうでない場合は文字列を表示したい時、これは条件分岐のIF関数で、 B7=IF(B2="","...