365・LibreOfficeなどに関するメモ2019-12-15(Gスプレッドシート)文字列を指定した回数ずつ各セルに並べるGoogleスプレッドシートGoogleスプレッドシートで、関数を使って文字列を指定した数だけ各セルに並べる方法についてです。REPT関数やSPLIT関数等を用いて文字列を多数のセルに並べることができます。手順1つの文字列を指定した回数並べる複数の文字列を指定した回数ずつ並べる複数の文字列をそれぞれ異なる指定した回数ずつ並べる手順1つの文字列を指定した回数並べるもっとも単純な例です。B3セルに文字列が、C3セルに繰り返し回数が記録されています。そこでB5セルに次のように入力することで、文字列を回数分だけ縦に並べて表示しています。=TRANSPOSE(SPLIT((REPT(B3&",",C3)),","))REPT関数により文字列にカンマをつけて繰り返してSPLIT関数で分割し、TRANSPOSE関数で縦に並べています。横並びにする場合はTRANSPOSE関数を外してください。アプローチとしてはお手軽なものの、REPT関数の制約上、繰り返しが膨大になるとエラーになるので(生成される文字列が32,000字まで)その点は注意する必要があります(以下同様)。複数の文字列を指定した回数ずつ並べる次に、B3:B5に記録されている文字列を、C3セルに記録されている回数ずつ表示させている例です。B7セルには次のように入力しています。=TRANSPOSE(SPLIT(CONCATENATE(ARRAYFORMULA((REPT(B3:B5&",",C3)))),","))基本的なつくりは上記の例と同じなのですが、REPT関数に配列を渡していますのでCONCATENATE関数のほかARRAYFORMULA関数も追加されています。複数の文字列をそれぞれ異なる指定した回数ずつ並べる最も一般化したパターンです。B3:B5に記録されている文字列を、C3:C5セルに記録されているそれぞれの回数ずつ表示させる例です。B7セルには次のように入力しています。=TRANSPOSE(SPLIT(CONCATENATE(ARRAYFORMULA((REPT(B3:B5&",",C3:C5)))),","))REPT関数の引数が「C3」から「C3:C5」に変わっているだけでほかは1つ上の例と同じです。365はデスクトップ版、LibreOfficeは記事作成時の安定バージョンを用いた結果を示しています。サイトポリシー等についてはこちらをご覧ください。(1)検索スポンサーリンク引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。