2022/01/17に更新

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

スプレッドシート小技

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

こんな悩みを解決します


  • 改行を入れてほしくないシートで、改行が使われているかどうかチェックしたい
  • 見つけた改行をまとめて削除したい

用意するもの


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

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


  • シートの選択範囲内にある「改行」を探して、セル番地を教えてくれます。
  • 必要であれば改行を削除することもできます。

使い方


1.検索したい範囲の選択

このスクリプトは選択中のセル範囲を対象にして動作します。スクリプト実行前に改行コードを探したい範囲を選択してください。
この例では一部だけ選択していますが、シート内全てを選択しても構いません。

2.スクリプトの実行

範囲を選択したら、メニューから「選択範囲内にある改行を検索する」を実行してください。

3.見つかった改行の確認と、削除の判断

選択範囲に改行が存在すると、そのセル番地が表示されます。この例では改行だけが含まれるセルが2つあったようです。
もし改行を削除したい場合は「OK」を押してください。
削除しなくてよい場合は「キャンセル」を押してください。スクリプトが終了します。

4.結果の確認

ダイアログで「OK」を押すと、引き続き改行コードの削除処理が実行されます。
削除されたことを確認してください。

5.改行コードが無かった場合

選択された範囲に改行コードが1つも無かった場合は、「改行は見つかりませんでした」というメッセージを表示して、スクリプトを終了します。

スクリプト


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

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

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

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

  // メニューに追加するボタン
  menu.addItem('選択範囲内にある改行を検索する', 'find_newline_code');

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


function find_newline_code() {

  // アラートを表示するためにUIを取得
  const ui = SpreadsheetApp.getUi();

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

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

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

  // 改行が含まれているセルを記録する配列
  let result = [];

  // セルを1つずつ改行が含まれているかチェックする
  for (let i = 0; i < values.length; i++) { // 行のループ
    for (let j = 0; j < values[i].length; j++) { // 列のループ
      if (values[i][j].toString().match(/\n/)) {
        // 改行が含まれていれば記録用の配列に追加する。1つ目が行、2つ目が列
        result.push([i, j]);
      }
    }
  }

  // 改行が含まれているセルをA1形式で表示するために、rangeの開始行、開始列を取得する
  const start_row = range.getRow();
  const start_col = range.getColumn();

  // 改行が含まれているセル番地をメッセージで表示する。表示するセルを格納する配列。
  let msg = [];

  // R1C1方式をA1方式に変換するために、アルファベットの配列を用意する
  const alphabets = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');

  // セル番地を生成、配列に追加していく
  for (let i = 0; i < result.length; i++) {

    let row = result[i][0] + start_row; // 行番号
    let col = result[i][1] + start_col; // 列番号

    msg.push(alphabets[col - 1] + row); //アルファベットの配列は0スタートなので-1する

  }

  // 改行を含むセルが1つも無ければスクリプトを終了する
  if(msg.length == 0){
    ui.alert('改行は見つかりませんでした');
    return;
  }

  // 改行を削除するかどうかユーザーに確認する
  const user_response = ui.alert('改行を含むセルが見つかりました\n' + msg.join('\n') + '\n\n改行を削除しますか?', ui.ButtonSet.OK_CANCEL);

  // キャンセルが押されたらスクリプトを終了する
  if (user_response == ui.Button.CANCEL) {
    return;
  }

  // ここから改行を消去するための処理
  // 改行を消したデータを作成する
  for (let i = 0; i < values.length; i++) { // 行のループ
    for (let j = 0; j < values[i].length; j++) { // 列のループ
      if (values[i][j].toString().match(/\n/)) { // 改行が含まれていれば
        values[i][j] = values[i][j].replace(/\n/g, ''); // 改行を消して値を上書き
      }
    }
  }

  // 改行を消したデータ配列をシートに書き込む
  range.setValues(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で便利に】指定した文字数でセルに分割する(列方向)

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

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

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

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

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

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

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

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

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

【GASで便利に】シート内の全てのリンクを抽出する

シート内に存在するハイパーリンク(URL)を取り出すGoogle Apps Scriptです。リンクを全て抜き出したくなったので作成してみました。

タグ一覧

最新のアプリ

人気のアプリ

myfunc.jp