365・LibreOfficeなどに関するメモ2022-12-11(Gスプレッドシート)SPLIT関数で縦・横の区切り文字により縦横に分割するGoogleスプレッドシートGoogleスプレッドシートのSPLIT関数は基本的に文字列を横にしか分割できませんが、少し工夫すれば縦横に分割できます。SPLIT関数とTRANSPOSE関数(またはFLATTEN関数)を組み合わせれば、文字列を縦区切り文字と横区切り文字に基づいて縦横に分割できます。画像中のB3セルが対象となる文字列です。D3セルに式を入力することで、文字列中の「@」を縦区切り文字とし、「_」を横区切り文字として分割しています。D3セル=ARRAYFORMULA(SPLIT(TRANSPOSE(SPLIT(B3,"@")),"_"))内側の「SPLIT(B3,"@")」で文字列を横方向に分割し、TRANSPOSE関数で縦に並べ替えています(TRANSPOSE関数についてはFLATTEN関数に代えてもOKです)。その結果に対し再度「SPLIT(~,"_")」を実行することで、縦に並べたそれぞれの文字列を横に分割しています。縦に並べた文字列すべてにSPLITを実行するためにARRAYFORMULAが必要となります。対象となる文字列が複数ある場合に、結果を縦にスタックさせることもできます。D3セル=ARRAYFORMULA(SPLIT(TRANSPOSE(SPLIT(JOIN("@",B3:B4),"@")),"_"))対象となる文字列を一旦JOIN関数で連結しており、このときに縦区切り文字である「@」を挿んでいます。あとは最初の例と同じです。JOIN関数で連結した時点で文字数が数万字に達するとエラーになるのが注意点です。365はデスクトップ版、LibreOfficeは記事作成時の安定バージョンを用いた結果を示しています。サイトポリシー等についてはこちらをご覧ください。(1)検索スポンサーリンク引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。