365・LibreOfficeなどに関するメモ2023-01-13(Gスプレッドシート)文字列を結合する方法GoogleスプレッドシートGoogleスプレッドシートで、文字列を結合(連結)する各種の方法についてです。&演算子を使う方法のほか、各種の関数を使って文字列を結合することができます。関数で便利なのはCONCATENATEとTEXTJOIN関数です。後者では区切り文字を入れることができます。JOIN関数も十分使えますがちょっとした制約があります。CONCAT関数は2つの文字列を結合するしかできず、実用的ではありません。単純に結合する場合&演算子で結合するCONCATENATE関数で結合する区切り文字を入れる場合JOIN関数で結合するTEXTJOIN関数で結合するCONCAT関数について単純に結合する場合&演算子で結合する画像ではE3セルに次のように入力することで、B3セルとC3セルに入っている2つの文字列を結合しています。=B3&C3このように2つの「&」でつなぐことで、文字列を結合した1つの文字列を得ることができます。様」という2文字)を結合しています。"」(ダブルクォーテーション)で囲みます。3つ以上の文字列を結合するときはそれらをすべて「&」でつなげばOKです。対象となる文字列が3つ4つ程度なら後述する関数よりこちらの方が簡単といえます。ところで、数値を「&」でつなぐと(足し算ではなく)見たまま結合したような文字列となります。日付や時刻をつないだ場合はいったんシリアル値(日付時刻に対応する数値)に変換されたのちに見たまま結合したような文字列となります。画像の例の場合、「44949.75」ならシリアル値として間違ってはいないのですが結果は「449490.75」となっているので正しくありません。日付と時刻をつなぐ正しい方法は「+」でつなぐことです。詳しくは次の記事で紹介しています。www.officeisyours.comCONCATENATE関数で結合する次の画像ではCONCATENATE関数を使って3つの文字列を結合しています。F3セル=CONCATENATE(B3:D3)対象となるセルを1つ1つ指定するのではなく、1つの範囲として「B3:D3」と指定することで、含まれるすべての文字列を結合した結果を得ることができます。次の画像ではB3:D6の範囲の12個の文字列を結合しています。対象となる文字列が多くなるほど、このような関数を使った結合の方が便利になります。対象となる範囲が飛び飛びの場合はカンマで区切って指定します。これは後述のJOIN関数やTEXTJOIN関数でも同様です。した応用ですが、次の画像ではTRANSPOSE関数を使って範囲を転置(行列を入れ替える)したうえで結合しています。1つ上の例では、上の行にある文字列から順に(A,B,C...)結合されていましたが、転置した効果により左の列にある文字列から順に(A,D,G,J...)結合されます。F3セル=CONCATENATE(TRANSPOSE(B3:D6))区切り文字を入れる場合JOIN関数で結合するJOIN関数を使うと、結合するそれぞれの文字列の間に区切り文字を入れることができます。F3セル=JOIN("・",B3:D3)区切り文字は第1引数で指定します。区切り文字として2文字以上の文字列を指定することもできます。区切り文字を省略する(カンマだけ入れる)か空文字列("")を指定すれば区切り文字を入れないこともできます。関数名の短いJOINを使いたいという理由でこうしている例がたまに見られます。ところでJOIN関数では、1行または1列の範囲しか結合することができず、複数行複数列の範囲を結合しようとするとエラーになります。この場合は「=JOIN("・",B3:D3,B4:D4)」とすれば結合できますが、そこまでするなら次のTEXTJOIN関数を使った方がいいです。JOIN関数のもう1つの弱点として、空白セルを無視できません。対象となるセルに空白セルがある場合、結合した文字列の先頭や末尾に区切り文字が入ったり、連続する区切り文字が入ったりします。これも次のTEXTJOIN関数では対処が可能です。TEXTJOIN関数で結合するTEXTJOIN関数を使えばJOIN関数と同様に区切り文字を入れることができ、複数行複数列の範囲を対象にすることも可能です。F3セル=TEXTJOIN("・",,B3:D4)区切り文字は第1引数で、対象範囲は第3引数で指定します。第2引数を「TRUE」と指定することにより、JOIN関数ではできなかった「空白セルを無視する」ということが可能です。空白セルがあっても結合後の文字列の先頭や末尾に区切り文字が入ることはありませんし、連続する区切り文字が入ることもありません。F3セル=TEXTJOIN("・",TRUE,B3:D4)第2引数に指定できる値はFALSE(既定値)とTRUEの2種です。FALSEだとJOIN関数のように空白セルを無視しない結果となります。CONCAT関数について上記のほかにCONCAT関数というものがあります。Excelだと多用される関数(GoogleスプレッドシートのCONCATENATEに相当)なのですが、Googleスプレッドシートでは2つの文字列を連結することしかできません。この辺りがとても紛らわしいです。次のように3つ以上のセルを指定するとエラーになります。「=CONCAT(B3,C3,D3)」としてもダメです。機能的には&と同じと言えますが3つ以上の文字列を結合しようとするとネスト(入れ子)するしかなく、明らかに&を使った方が簡単です。365はデスクトップ版、LibreOfficeは記事作成時の安定バージョンを用いた結果を示しています。サイトポリシー等についてはこちらをご覧ください。(1)検索スポンサーリンク引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。