2021/09/30に更新

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

スプレッドシート小技

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

こんな悩みを解決します


  • スプレッドシートの2つのセルの値を入れ替えが面倒
  • 列や行の入れ替えも面倒

用意するもの


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

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


  • 2つのセルの値を入れ替えることができます
  • 単独のセルだけではなく、範囲選択したセルも入れ替えられます
  • 行や列も入れ替えることができます

使い方


1.ひとつめの範囲を選択します

まずは入れ替えたいセル(単独、範囲)もしくは行や列を選択してください。

2.ふたつめの範囲を選択します

2つ目の範囲を選択します。
Ctrl or Commandキーを押しながら選択して、1つ目と2つ目の範囲が両方とも選択されている状態にします。
このときの注意点は「選択するセル・行・列の数を1つ目と2つ目で同じにする」ということです。値を入れ替えるので、選択部分に差異があると動きません。

3.スクリプトの実行

準備ができたらスクリプトを起動します。
スプレッドシートの上部に「スクリプト実行」のメニューがあります。

このように値が入れ替わります。列や行でも同じように入れ替えることが可能です。

4.エラーになる場合

それぞれの選択範囲に差がある場合は「選択する範囲は2つで揃えてください」というエラーになります。
この例では、A列では4つのセルを、B列では3つのセルを選んでいるため数が一致していません。

選択範囲が2つではない場合は「2つのセルもしくは範囲を選択してください」というエラーになります。
この例では3つの場所を選択してしまっています。

スクリプト


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

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

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

  // メニューに追加するボタン
  menu.addItem('セルの中身入れ替え', 'swap_cell_value');

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

function swap_cell_value() {
  // 現在選択されているセル(範囲)を取得
  const range_list  = SpreadsheetApp.getActiveRangeList().getRanges();

  if(range_list.length != 2){
    Browser.msgBox('2つのセルもしくは範囲を選択してください');
    return;
  }

  // セル範囲の取得
  const range_a = range_list[0];
  const range_b = range_list[1];

  // セル範囲の値を取得
  const range_values_a = range_a.getValues(); // 選択範囲1つ目
  const range_values_b = range_b.getValues(); // 選択範囲2つ目

  if(range_values_a.length != range_values_b.length){
    Browser.msgBox('選択する範囲は、2つで揃えてください');
    return;
  }

  // 1つ目のセル範囲には2つ目の範囲の値をセットする。逆も実行。
  range_a.setValues(range_values_b);
  range_b.setValues(range_values_a);
}

関連するアプリ


【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で時短】データ・文字が入っていない行を削除する

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

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

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

タグ一覧

最新のアプリ

人気のアプリ

myfunc.jp