• 公開日:

スプレッドシートの空白セルを詰める方法

Google スプレッドシートで表やリストの管理をしている際、入力されていないセル(空白のセル)が多くなり、シートが見づらくなったことはありませんか?

スプレッドシートでは、選択した範囲にある空白のセルを削除し、入力されているセルを詰め、見やすくまとまりのある形へ簡単な操作ですることが出来ます。

この記事では、空白のセルを詰める方法を分かりやすく紹介します。

スプレッドシートの空白セルを詰める方法

Google スプレッドシートで空白のセルを詰める場合、主に下記の方法で行うことが出来ます。

  • フィルタ機能を使用する
  • QUERY関数を使用する
  • GASでスクリプトを作成する

以下より、それぞれの方法を詳しく解説します。

フィルタ機能を使用して空白のセルを詰める

フィルタ機能を使用して空白のセルを詰める場合、メニューバーにあるデータから行います。

こちらの方法を用いると、非常に簡単な操作である反面、空のセルと付随した行のセルも詰められてしまうため、複数列にランダムで空白のセルがある場合は向きません。

以下より、フィルタ機能を使用して空白のセルを詰める方法を詳しく解説します。

範囲を選択

空白のセルを詰めたい範囲を選択します。

「フィルタ」を作成を順に選択

メニューバーにある①「データ」、②「フィルタ」を作成を順に選択します。

以下のショートカットキーでも、フィルタを作成することが出来ます。

OSショートカットキー
WindowsAlt+D+F (Google Chrome)
Alt+Shift+D+F (その他ブラウザ)
MacOption+D+F (Google Chrome)
Option+Shift+D+F (その他ブラウザ)
フィルタのマークをクリック

フィルタのマークをクリックします。

「OK」ボタンをクリック

(空白)をクリックしてチェックマークを外し、②「OK」ボタンをクリックします。

空白のセルが詰められる

選択した範囲内にある空白のセルを詰めることが出来ました。

付随する行のセルも詰められるため、1列のみの範囲に対して行うには最適です。

QUERY関数を使用して空白のセルを詰める

QUERY関数とは、指定したデータを抽出し、そのデータに対して条件を指定する関数です。

QUERY関数は「=QUERY(抽出する範囲,where条件範囲の列=条件)」のように設定します。

以下より、QUERY関数を使用して空白のセルを詰める方法を詳しく解説します。

セルを選択

空白のセルを詰めたデータを表示したいセルを選択します。

この記事では、予め空白のセルを詰めたデータを表示する行を、QUERY関数行として用意しています。

「=QUERY( 」と入力

「=QUERY( 」と入力します。

範囲を選択

空白のセルを詰めたい範囲を選択します。

選択した範囲が数式に反映されました。

「,"where A !=' ' ")」と入力

続けて「,"where A !=' ' ")」と入力します。

この数式は、「=QUERY(A2からA11の範囲で,A列にある=空白を抽出)」を意味します。

Enterキーを押す

数式を確定させるために、Enterキーを押します。

Ctrlキー+Cキーを押す

空白のセルが詰められて表示されました。

表示された範囲をコピーするために、Ctrlキーを押しながらCキーを押します。

Ctrl+Shiftキー+Vキーを押す

数式で割り出されたデータを貼り付けるために、CtrlキーとShiftキーを押しながらVキーを押します。

列Aの空白セルを詰めることが出来た

列Aにおける空白のセルを詰めることが出来ました。

「=QUERY(B2:B11,"where B !=' ' ")」と入力

続けて、列B・Cに同様の操作を行います。

QUERY関数行に、「=QUERY(B2:B11,"where B !=' ' ")」と入力します。

列Bの範囲を選択

列Bのように、入力されているデータが数字の場合、「エラー クエリが空の出力で完了しました。」と表示される場合があります。

この場合は、数字が入力されている列Bの範囲を選択します。

「書式なしテキスト」の順に選択

「表示形式」、②「数字」、③「書式なしテキスト」の順に選択します。

以下のショートカットキーでも、数字の表示形式を書式なしテキストにすることが出来ます。

OSショートカットキー
WindowsAlt+O+N+X (Google Chrome)
Alt+Shift+O+N+X (その他ブラウザ)
MacOption+O+N+X (Google Chrome)
Option+Shift+O+N+X (その他ブラウザ)
エラーが解消される

エラーが解消され、空白のセルが詰められて表示されました。

行を選択して右クリック

列B・Cに、列Aと同じような処理を行い、空白のセルを詰めて表示することが出来ました。

リストにある余分な行を選択して右クリックします。

「行を8-11を削除」をクリック

「行を8-11を削除」をクリックします。

空白のセルすべてを詰めることが完了

リスト内にある空白のセルを、すべて詰めることが出来ました。

GASでスクリプトを作成して空白のセルを詰める

Google Apps Script(GAS)を作成して、空白のセルを詰める場合、メニューバーにある拡張機能から行います。

GASでスクリプトを作成、保存しておけば、以降は簡単に空白のセルを詰めることができるので便利です。

以下より、GASでスクリプトを作成して空白のセルを詰める方法を詳しく解説します。

「Apps Script」を順に選択

「拡張機能」、②「Apps Script」を順に選択します。

「新しいプロジェクト」ボタンをクリック

「新しいプロジェクト」ボタンをクリックします。

名前を変更をクリック

「無題のプロジェクト」という名前になっているので、後に分かりやすいように名前を変更します。

名前を変更をクリックします。

名前を変更します

プロジェクトタイトルを入力し、②「名前を変更」ボタンをクリックします。

この記事では、プロジェクトタイトルを「空白のセルを詰める」としております。

GASスクリプトをコピーして貼り付けます。

下記のGASスクリプトをコピーして貼り付けます。

選択した範囲内の各列を検査し、空白のセルを見つけると行を詰めるスクリプトです。

function compactEmptyCellsInSelectedRange() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var selectedRange = sheet.getActiveRange();
  var numRows = selectedRange.getNumRows();
  var numCols = selectedRange.getNumColumns();

  for (var j = 1; j <= numCols; j++) {
    var columnValues = selectedRange.getSheet().getRange(selectedRange.getRow(), selectedRange.getColumn() + j - 1, numRows, 1).getValues();
    var compactedValues = [];

    for (var i = 0; i < numRows; i++) {
      if (columnValues[i][0] !== '') {
        compactedValues.push([columnValues[i][0]]);
      }
    }

    var targetRange = selectedRange.offset(0, j - 1, compactedValues.length, 1);
    targetRange.setValues(compactedValues);
  }
}
プロジェクトを保存をクリック

「プロジェクトを保存」をクリックします。

拡張機能をクリック

現在のシートに戻り、拡張機能をクリックします。

「マクロをインポート」を順に選択

「マクロ」、②「マクロをインポート」を順に選択します。

「関数を追加」ボタンをクリック

作成したスクリプトが表示されています。

「関数を追加」ボタンをクリックします。

閉じるをクリック

チェックマークに変わり、マクロをインポートすることが出来ました。

閉じるをクリックして、メニューを閉じます。

範囲を選択

空白のセルを詰めたい範囲を選択します。

「追加したマクロ」の順に選択

「拡張機能」、②「マクロ」、③「追加したマクロ名(compactEmptyCellsInSelectedRange)」の順に選択します。

余分な行を選択して右クリック

空白のセルが詰められました。

リストにある余分な行を選択して右クリックします。

「行を8-11を削除」をクリック

「行を8-11を削除」をクリックします。

空白セルすべてを詰められた

リスト内にある空白のセルを、すべて詰めることが出来ました。