![見出し画像](https://assets.st-note.com/production/uploads/images/91583912/rectangle_large_type_2_7cdfb0f489e4c4e7bf1dd6be0622f9d1.png?width=1200)
Officeの小技⑤TEXTJOINで膨大なAND条件式を簡単に作る
ご挨拶
最近LaQ(ラキュー)というパズルブロックが楽しいです。
長男が楽しそうに剣やら馬やら作っています。
自分も子供の頃にLaQに出会っていたら、数学の図形問題で
躓かなかったかもしれない…
TEXTJOIN関数って何?
こちらについては前回の
Officeの小技④TEXTJOINで文字列結合をラクに
をご参照ください。
https://note.com/kankare/n/n2b1fecb2701f
本編
さてさて、では本編に参りましょう。
登場人物のご紹介
今回は二人の登場人物に説明を手伝ってもらいます。
拙著
『毎週のExcel集計 手作業コピペをやめたら速度12倍になった件』
https://www.amazon.co.jp/dp/B0BFXM4V4M
に登場した以下のお二人です!
![](https://assets.st-note.com/img/1668922470669-OIq6IaNbiq.png?width=1200)
本編開始!
![](https://assets.st-note.com/img/1668924619001-8Ta4e0TETO.png?width=1200)
![](https://assets.st-note.com/img/1668924618691-VhWZhOvwNw.png?width=1200)
![](https://assets.st-note.com/img/1668924619241-QAGo8zJl3m.png?width=1200)
![](https://assets.st-note.com/img/1668924619451-9PFE8zKLlY.png?width=1200)
![](https://assets.st-note.com/img/1668924619588-qlm7reBFrI.png?width=1200)
![](https://assets.st-note.com/img/1668924619810-DPzR3qg8SU.png?width=1200)
![](https://assets.st-note.com/img/1668924620021-a61AvXlZaA.png?width=1200)
![](https://assets.st-note.com/img/1668924620241-WHeVBC9STs.png?width=1200)
![](https://assets.st-note.com/img/1668924618769-jWcpb9g1b9.png?width=1200)
【宣伝①】
ワンコインで集計の自動化始めませんか?
毎週の集計でCSVファイルを手作業コピペしている方がいたら
ぜひお勧めください!
書籍 『毎週のExcel集計
手作業コピペをやめたら速度12倍になった件
~60万行の集計時間が40分から3分に!~』
![](https://assets.st-note.com/img/1668923471395-7NuyMpCg8N.png?width=1200)
【宣伝②】
Twitterで最新情報を発信中です!
フォローお待ちしておりますー
https://twitter.com/dx_uncle
![](https://assets.st-note.com/img/1668923520513-bJJIxvFt1F.png)
補足その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関数はスッキリするわね。
ハリオ:こちらだとより分かりやすいですね!
ありがとうございます!