【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集

office365を使用しています。
添付ファイルのような表中,B列に1が入っている行のC列の値を結合させる方法があればご教示願います。

=if(B2=1,C2,"")&if(B3=1,C3,"")・・・

と地道にif関数でつなげていく方法もありますが,行数が膨大な場合には対応が難しいため,他に良い方法があればお願いします。

「表中の指定した条件の文字列を結合する方法」の質問画像

A 回答 (4件)

office365のExcelなら以下の関数で対応できるかと。


 =TEXTJOIN("",TRUE,FILTER(C2:C48,(B2:B48=1)))
都道府県の範囲だとして設定してあります。

FILTER関数とTEXTJOIN関数
https://hitotsu-eye.com/excel_master_26/
「表中の指定した条件の文字列を結合する方法」の回答画像1
    • good
    • 0
この回答へのお礼

ありがとうございます。
こんな関数があるとは勉強になりました。

お礼日時:2024/08/01 17:45

No.3です。


大変失礼しました。前回回答の(2)の説明に誤りがありました。
お詫びして以下のとおり訂正いたします。

誤:(2)C列の文字列を全て結合するが、B列に1が入っていたら・・・
正:(2)C列の文字列を全て結合するが、B列に1が入っていなかったら・・・
    • good
    • 0

既にTEXTJOIN関数とFILTER関数を組み合わせた回答が複数ついており、課題は解決済みだと思いますが、参考情報として投稿します。



「B列に1が入っている行のC列を結合する」というご質問の解決方法として、考え方は以下のとおり複数あります。
(1)B列に1が入っている行のC列を抽出してから結合する
(2)C列の文字列を全て結合するが、B列に1が入っていたらC列の文字列の長さを0にして結合(つまり、空白を結合)する

ご質問者がお示しになった
=if(B2=1,C2,"")&if(B3=1,C3,"")・・・
という数式は(2)の考え方だと思います。

既出回答のTEXTJOIN関数とFILTER関数を組み合わせた数式は(1)の考え方だと思います。

ご質問者がお示しになった数式では、ご自身が述べているとおり「行数が膨大な場合には対応が難しい」ため、(2)の考え方で作成した以下のような数式はいかがでしょうか

=CONCAT(LEFT(C:C,LEN(C:C)*B:B))・・・①

=TEXTJOIN("",1,LEFT(C:C,LEN(C:C)*B:B))・・・②

使用している関数がTEXTJOIN関数かCONCAT関数かという違いはありますが、数式①も数式②もやっていることは同じです。
    • good
    • 0
この回答へのお礼

ありがとうございます。
勉強になりました。

お礼日時:2024/08/06 14:50

こんにちは



365環境なら、
 =TEXTJOIN("",1,FILTER(C:C,B:B=1,""))
で、できませんか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
できました。365だと違う関数の組み方ができるんですね。

お礼日時:2024/08/01 17:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A