使う機会も増えてきたGoogle スプレッドシート(略称:スプシ)。
スプレッドシートのヘビーユーザーの方がスプレッドシートに5万文字以上入力出来ないということを小耳に挟んだもののgoogleの仕様が無理なら出来ないのではと思い調べもしなかったのですが、できるらしいという情報を得たので調べてみました。
通常の文字列結合方法(5万文字は超えられない)
通常文字列をgoogleスプレッドシートで結合する場合は以下のように結合するかと思います。
=A1&A2
ただこの場合エラーとなり「CONCAT のテキストの結果が50000 文字の制限を超えています。」というメッセージが表示され、セルも #VALUE! と虚しくも表示する結果となります。
Query関数を利用する(5万文字以上入力可能)
調べた結果Query関数を使うと50,000文字を突破できるようです。
5万文字突破する方法
Query関数を使って5万文字を突破する書き方は以下になります。
=query(A1:A,,100000)
上記は例なので詳しく説明していきます。
query関数について
要となるquery関数について見ていきます。
query関数はSQLを使ったことがある人には馴染みやすいかと思いますが馴染みのない場合は、ここでは5万文字さえセルに表示できればいいのでそんなものがあるんだ程度で受け止めていただければと思います。
公式に記載されているquery関数の引数を確認すると以下のようになります。
QUERY(データ, クエリ, [見出し])
5万文字を突破するために使うのは「データ」と「見出し」の部分だけです。本来のクエリ関数の使い方とは異なるので本来の使い方ではなく5万文字以上を表示させるためだけのポイントを説明します。(Googleが仕様変更して急に使えなくなるということもあり得るかと思います。)
データ
「データ」には結合したい文字列のセルを入れます。A列全てであれば「A1:A」となり、A1からA100までであれば「A1:A100」となります。
注意したい点はデータは列単位のみであるという点です。A1とB2の文字列を結合したい場合は一度縦の並びになるように調整する必要があります。理由は次に説明する見出しに関係します。
見出し
5万文字以上の文字列は見出しとして出力されます。
見出しの部分にはなるべく大きめの数値を入れます。本来は見出しの行数を指定するものですがここでは100000と指定しておきます。実際にまとめる文字列の列のセルの数より大きい数値を入れておけば1つのセルに収まるようです。
参考元では「=ArrayFormula(query(A1:A100000,,100000))」と書かれておりましたがArrayFormula関数はおまじないみたいなものかなくても動くのでここでは割愛しました。
調査してみた結果300,000文字くらいは入ったので限界値があるのか謎ですが5万文字以上入力したかった方はquery関数を利用することも検討してみるといいかと思います。
CSVへの出力など問題なく行えました。
おわり
50,000文字の壁と突破するために利用したquery関数はスプレッドシートやエクセルの関数に不慣れな身にはどう扱えばいいのか理解するのに時間がかかりました。
参考元:New Google spreadsheet Concatenate limit 50000 characters