2022/02/01に更新

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

スプレッドシート小技

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

こんな悩みを解決します


  • 複数セルに分けて入力してしまったけど、やっぱり1セル内で改行する形に変えたい。
  • セルの結合だと一部が消えてしまうし、関数でやるのはめんどくさい。

用意するもの


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

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


  • 選択されている範囲に含まれるテキストを、1セルにまとめます。
  • 集約されたテキストは選択範囲の一番左上のセルに反映されます。その他のセルの値は消去されます。

使い方


1.スクリプトの実行

50音を1行ずつセルに入力したものでテストします。「あ〜な行」を連結したくなったのでこの範囲を選択します。

スクリプトを実行します。メニューから「選択範囲の文字を1セルにまとめる」を実行します。

2.結果の確認

画像のように各セル内の文字が、一番左上のセルにまとめられました。セルごとに改行1つで区切られます。

もし複数の列を選択してから実行した場合は、1行ずつまとめられます。この例だと「あ行 → は行 → か行 → ま行・・・」の順番で連結されます。

スクリプト


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

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

  // UIの取得
  const ui = SpreadsheetApp.getUi()

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

  // メニューに追加するボタン
  menu.addItem('選択範囲の文字を1セルにまとめる', 'gathering_text_to_one_cell');

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


function gathering_text_to_one_cell() {

  // アクティブなスプレッドシート、シートを取得
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  // シート上で選択されている範囲を取得
  let range = sheet.getActiveRange();

  // 選択されている範囲の値を取得
  let values = range.getValues();

  // 結合したテキストを格納する配列を作成
  let text = [];

  // 選択範囲のセルに含まれる文字列を1つの配列にまとめる
  for (let i = 0; i < values.length; i++) { // 行のループ
    for (let j = 0; j < values[i].length; j++) { // 列のループ
      text.push(values[i][j]); //テキストを追加
    }
  }

  // 書き込み用の配列を作る
  let values_after = [];

  // セル書き込み用の2次元配列を作成。まずは空の配列を作る。
  for (let i = 0; i < values.length; i++) { // 行のループ
    let array = Array(values[i].length); //列の数だけ空の配列を作る
    values_after.push(array); //書き込み用の配列に追加
  }

  // 一番左上のセルに連結したテキストをセットする
  values_after[0][0] = text.join('
');

  // セルにテキストを書き込む
  range.setValues(values_after);

}

関連するアプリ


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

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

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

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

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

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

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

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

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

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

【GASで時短】選択範囲のデータをCSVで出力する

スプレッドシートの選択している範囲だけをCSVで出力するGoogle Apps Scriptです。CSVで出力したい・・・けどシート全体をCSVでダウンロードするのは面倒という方へ。

【GASで時短】スプレッドシートを一発で方眼紙にする

職場によっては使用が強制されていたり、逆に禁止されていたりする「方眼紙」を作成するGoogle Apps Scriptです。

タグ一覧

最新のアプリ

人気のアプリ

myfunc.jp