見出し画像

Officeの小技⑤TEXTJOINで膨大なAND条件式を簡単に作る

ご挨拶

最近LaQ(ラキュー)というパズルブロックが楽しいです。
長男が楽しそうに剣やら馬やら作っています。
自分も子供の頃にLaQに出会っていたら、数学の図形問題で
躓かなかったかもしれない…


TEXTJOIN関数って何?

こちらについては前回の
 Officeの小技④TEXTJOINで文字列結合をラクに
をご参照ください。
https://note.com/kankare/n/n2b1fecb2701f


本編

さてさて、では本編に参りましょう。

登場人物のご紹介

今回は二人の登場人物に説明を手伝ってもらいます。
拙著
 『毎週のExcel集計 手作業コピペをやめたら速度12倍になった件』
  https://www.amazon.co.jp/dp/B0BFXM4V4M
に登場した以下のお二人です!



本編開始!


【宣伝①】

ワンコインで集計の自動化始めませんか?
 毎週の集計でCSVファイルを手作業コピペしている方がいたら
 ぜひお勧めください!

書籍 『毎週のExcel集計
    手作業コピペをやめたら速度12倍になった件
     ~60万行の集計時間が40分から3分に!~』


【宣伝②】

 Twitterで最新情報を発信中です!
 フォローお待ちしておりますー
 https://twitter.com/dx_uncle


補足その1「CONCAT関数でも実現可能」

今回の内容はCONCAT関数でも同じことができます。
ただ、個人的にはTEXTJOIN関数での実施をオススメします。
CONCAT関数よりもTEXTJOIN関数の方ができることが多いためです。
また、覚える関数は少ない方がよいと思いますので。

補足その2「別解あり」

今回の件は膨大な別解があると思います。
 ・COUNTIF関数を使う
 ・SUBSTITUTE関数でゼロイチに置換してSUM関数→IFで>0
などなど…。
今回、TEXTJOIN関数での解決方法をご紹介した理由は
「計算が苦手な人に少しでもわかりやすくしたい」と考えたためです。
上記のCOUNTIF関数等の別解はどうしても数値的な計算が登場します。
シンプルに「文字ぜんぶくっつけて空白だったら出張ナシ」という
数値を一切意識しない解決策を作りたかったねらいがあります。

本編(テキストのみ)

本編が画像ファイルですので、以下にテキストの原稿を記載します。
※内容は同じです。検索用にどうぞ。

ハリオ:うーん―――。あ―――――。
    どうしよう…
ス マ:どうしたのハリオ君?わかりやすく頭を抱えて?
ハリオ:あ、スマさん。お疲れ様です。
    いや実は困ってまして。
ハリオ:部長から
    「社内で出張が無い人の旅費について予算を検討したい。
     ついてはここに3年分(36か月分)の出張アリ・ナシの
     明細があるから、1回も出張が無かった人の一覧をパパっと
     作ってくれんかね?あ、明日までね。」
    って言われたんです。
ス マ:あらあら、大変ね。どこで躓いてるの?
ハリオ:社員別に3年(36か月)分の出張アリ・ナシを1列1か月で
    36列に並べるところまではできたんですよ。
    出張アリが「〇」出張ナシが「(空白)」です。
ス マ:お、頑張ったわね。あと少しじゃない?
ハリオ:そうなんですけど…。
    36列全部が「空白(=出張無し)」の場合に
    最後の(AO列)「出張アリ・ナシ」へ
    「出張ナシ」を表示する関数で悩んでます。
ハリオ:パッと思いついてるのはIF関数です。
    IF(D3=””, IF(E3=””,,…)というように36か月分、IF関数を書けば
    良いのかなと思いました。
    なので、試しに最初の2列(D列とE列)で
    IF関数を書いてみたのですけど…。なんだか見づらくて。
ス マ:うーん確かに。ゴチャゴチャした感じがするわね。
    2列だけでこれだから、36列をこの書き方で書くのは
    ちょっとツラいわね。
    IF関数で36列チェックするのではなくて、
    36列の値を繋いだ値をIF関数でチェックするのはどう?
ハリオ:なるほど!こんな感じですね?
    まずは最初の2列(D列、E列)だけで書いてみました。
ハリオ:あー、あとは36列を「&」で繋ぐ作業がなければ楽なのになー。
ス マ:あるわよ、一瞬で36列を繋ぐ関数。
ハリオ:なんと!?ぜひ教えてください!
ス マ:いいわよ、教えてあげる。
    TEXTJOIN関数を使うのよ。書き方は以下の通りよ。
ス マ:ポイントは1つ目の引数に「何も入力しない」ところよ。
    こうすることで、36列の値を「区切り文字を入れずに」
    繋ぐことができるわ。
ハリオ:おー、ありがとうございます!
    これで完成だ。
ス マ:ちなみに、イメージが湧きづらいようなら
    「TEXTJOINで36列を繋いだ結果」の列を追加するといいわよ。
    この方が「出張アリ・ナシ」のIF関数はスッキリするわね。
ハリオ:こちらだとより分かりやすいですね!
    ありがとうございます!




いいなと思ったら応援しよう!