2021/10/07に更新

【GASで便利に】指定した文字数でセルに分割する(行方向)

スプレッドシート小技

1つのセルに入力されている文字列を、指定した文字数で分割するGoogle Apps Scriptです。区切りに使用する文字が無くても大丈夫です。行方向に分割します。

こんな悩みを解決します


  • セルに入力されている文字を、N文字ずつ分割したい
  • 分割に使える区切り記号は入っていないので標準の分割機能では対応できない

用意するもの


特にありません。今お使いのスプレッドシートに組み込めます。

このスクリプトで出来ること


  • 指定したセルに入っている文字列を、指定した文字数で分割して行方向に貼り付けます。
  • 区切りたい文字数は入力ボックスで指定することができます。

使い方


1.対象のセルを選択

分割したい文字列が入っているセルを選択します。
複数のセルを選択した場合は、一番左上のセルが対象になります。

2.スクリプトの実行

スクリプトを起動します。
メニューから「指定文字数でセルに分割(行方向)」を実行します。

3.文字数の入力

何文字ごとに分割したいか、文字数を入力します。

少し待つと、指定した文字数ごとに分割されてセルに書き込まれます。
すでに値が入っているセルでも、上書きしてしまいますのでご注意ください。

文字数を指定するとき、分割対象の文字数より大きい数を入れると「セルの文字数が分割する文字数より少ないため処理を中止します」というエラーが出てスクリプトが終了します。

文字数を指定するとき、半角数字以外の文字を入れると「1以上の半角数字で入力してください」というエラーが出てスクリプトが終了します。
1未満の数では分割できないため、1以上の数字を入れてください。

スクリプト


/**
 * このスクリプトの説明、使い方はこちら。
 * https://myfunc.jp/items/00011/index.html
 */

function onOpen() {
  // スプレッドシートを開いたときに実行される関数

  var ui = SpreadsheetApp.getUi()

  // メニューの表示名
  var menu = ui.createMenu('スクリプト実行');

  // メニューに追加するボタン
  menu.addItem('指定文字数でセルに分割(行方向)', 'split_by_number_row');

  // メニューを画面に追加する
  menu.addToUi();
}

function split_by_number_row() {
  // シートを取得
  const sheet = SpreadsheetApp.getActiveSheet();

  // 現在選択されているセルを取得
  const current_cell = sheet.getCurrentCell();

  // 現在選択されているセルの値を取得
  const current_cell_value = current_cell.getValue();

  const number_chars = Browser.inputBox('何文字ごとに分割するか指定してください', Browser.Buttons.OK_CANCEL);

  // 半角数字以外もしくは1未満の数字はエラーとする
  if (!number_chars.match(/[0-9]+/) || number_chars < 1) {
    Browser.msgBox('1以上の半角数字で入力してください');
    return;
  }

  // セルの文字数が指定された分割文字数より少ない場合はエラーとする
  if (current_cell_value.length < number_chars) {
    Browser.msgBox('セルの文字数が分割する文字数より少ないため処理を中止します');
    return;
  }

  // 正規表現を作成する
  var regexp = new RegExp('.{' + number_chars + '}', 'g');

  // 指定文字数で分割する
  // これでは指定文字数未満の余りが取得できていないので・・・
  const splitted = current_cell_value.match(regexp);

  // 余り部分を取得する
  const amari = (current_cell_value.length % Number(number_chars)) * -1;
  if (amari < 0) {
    splitted.push(current_cell_value.slice(amari));
  }

  // スプレッドシートへの値書き込みに使う配列を宣言
  let cell_values = new Array();

  // 書き込み用の二次元配列を作成
  for (var i = 0; i < splitted.length; i++) {
    cell_values.push([splitted[i]]);
  }

  // スプレッドシートに書き込み
  sheet.getRange(current_cell.getRow(), current_cell.getColumn(), splitted.length, 1).setValues(cell_values);

}

関連するアプリ


【GASで便利に】2つのセルの値を入れ替える

選択した2つのセル(範囲)の値を、入れ替えるGoogle Apps Scriptです。行や列の入れ替えもできます。

【GASで便利に】セルの順番を逆にする(行)

選択した行範囲の順番を逆にするGoogle Apps Scriptです。ソートではなく、単純に順番を逆にします。関数の組み合わせでも実現できますが、GASを登録してしまったほうが早いかもしれません。

【GASで便利に】セルの順番を逆にする(列)

選択した列範囲の順番を逆にするGoogle Apps Scriptです。行バージョンを作ったので、列バージョンも。ニーズはあるのでしょうか。

【GASで便利に】セルの順番を逆にする(行と列)

選択した行および列範囲の順番を逆にするGoogle Apps Scriptです。これは本当に使い所があるのかわかりませんが、作ってみたので公開します。

【GASで便利に】指定した文字数でセルに分割する(列方向)

1つのセルに入力されている文字列を、指定した文字数で分割するGoogle Apps Scriptです。区切りに使用する文字が無くても大丈夫です。列方向に分割します。

【GASで時短】結合されたセルを検索&解除する

選択範囲に存在する結合されたセルを検索し、解除することもできるGoogle Apps Scriptです。予想外の結合によって困ったことがある方は多いと思います。このアプリが転ばぬ先の杖になれば幸いです。結合を解除するかどうかはダイアログで選択できます。

【GASで便利に】キーワードを含むセル番地を一覧表示する

検索キーワードを全シートから探して、ヒットしたセル番地をまとめて表示するGoogle Apps Scriptです。標準の検索機能ではヒットしたセルが1個ずつ分かりますが、まとめて知りたくなったので作成しました。

【GASで時短】選択範囲に存在する「改行」を検索&削除する

選択範囲に改行が含まれているセルを検索し、削除することもできるGoogle Apps Scriptです。想定外の改行によって困ることが稀によくありますので作ってみました。改行を削除するかどうかはダイアログで選択できます。

【GASで時短】データ・文字が入っていない行を削除する

シート内の「何も書き込まれていない行」を削除してくれるGoogle Apps Scriptです。スプレッドシートをメモ帳代わりにしていると、特に意味のない空白行がたくさんあったりして、消すのが面倒だったので作成してみました。すべての列に何も文字が入っていない行を消し去ります。

【GASで時短】1行ごとに空白行を挿入する

1行ごとに任意の空白行を挿入してくれるGoogle Apps Scriptです。データを整理中に「今ある行の間に1行ずつ足したい・・・」ということが稀によくあるので作成しました。追加する行数はプロンプトで指定が可能です。

【GASで時短】複数セルの中身を1セルにまとめる

選択されたセル範囲のテキストを、1つのセルにまとめるGoogle Apps Scriptです。セルを分けて色々書き込んだけど、1セル内に改行して入力するんだった・・・!というときに使えるかも。

【GASで時短】ひらがなをカタカナに変換する

選択範囲の「ひらがな」を「カタカナ」に変換するGoogle Apps Scriptです。ルビやフリガナを平仮名で書いてしまったけどやっぱり片仮名にしたくなったときにどうぞ。

【GASで時短】カタカナをひらがなに変換する

選択範囲の「カタカナ」を「ひらがな」に変換するGoogle Apps Scriptです。ひらがな→カタカナを作ったので逆バージョンも作ってみました。

タグ一覧

最新のアプリ

人気のアプリ

myfunc.jp