スプレッドシートで作業をしていると、不要な空白セルや空白行が混じってしまうことがあります。
これらの空白を放置すると、データの分析や処理に支障をきたす可能性があります。
本記事では、スプレッドシートの空白セルを効率的に削除する方法について、手動での操作からGoogle Apps Script (GAS)を使った自動化まで、わかりやすく解説します。
スプレッドシートで、テキストに含まれている不要な空白を削除したい場合は、こちらをご覧ください。
1. FILTER関数を使用して空白セルを削除する方法
まずは、FILTER関数を使用して、空白セルを削除する簡単な方法をご紹介します。
操作したいスプレッドシートを開き、空のセルに以下の数式を入力します。
=FILTER(元の範囲, 元の範囲<>"")
<>
は「等しくない」を意味する演算子、""
は空の文字列を表します。
したがって、元の範囲<>""
は「元の範囲の各セルが空でない」という条件を表現しています。
そして、空でないセルに対してはTRUE、空のセルに対してはFALSEを返します。
FILTER関数では、この条件がTRUEとなるセルのみを抽出するため、元の範囲から空白セルを除いたデータが得られます。
FILTER関数を使用した例
例として、以下のデータをA1:D6セルの範囲に挿入し、空白セルを削除していきます。
名前 | 年齢 | 職業 | メモ |
---|---|---|---|
山田太郎 | 25 | エンジニア | 新入社員 |
部署異動予定 | |||
佐藤花子 | 30 | デザイナー | |
鈴木一郎 | 40 | マネージャー |
空白セルを削除するためには、空のセルにFILTER関数を入力する必要があります。
FILTERの範囲には、単一行か単一列を指定する必要があるため、今回は空のセルA10:D10の範囲に下記の数式を入力します。
A10 | B10 | C10 | D10 |
---|---|---|---|
=FILTER(A1:A6, A1:A6<>"") | =FILTER(B1:B6, B1:B6<>"") | =FILTER(C1:C6, C1:C6<>"") | =FILTER(D1:D6, D1:D6<>"") |
FILTER関数をスプレッドシートのA10:D10セルの範囲に実際に入力すると、以下のようになります。
FILTER関数により、元の範囲A1:D6のデータから空白セルを削除したデータを、A10:D13の範囲に表示することができています。
FILTER関数を利用することで、効率的なデータ抽出をリアルタイムで行うことができ、複雑な条件設定にも簡単に対応することができます。
2. GASを使って空白行を自動で削除する方法
Google Apps Script (GAS)を使用することで、空白行の削除を自動化することができます。
まず、スプレッドシートのメニューバーの「拡張機能」を左クリックし、「Apps Script」を選択します。
本項でも前項と同様に、下記のサンプルデータをA1:D6セルの範囲に挿入して使用しています。
名前 | 年齢 | 職業 | メモ |
---|---|---|---|
山田太郎 | 25 | エンジニア | 新入社員 |
部署異動予定 | |||
佐藤花子 | 30 | デザイナー | |
鈴木一郎 | 40 | マネージャー |
「Apps Script」を選択すると、スクリプトエディタが新しいタブで開きます。
元から入力されているfunction myFunction() {}
は削除します。
以下のスクリプトをコピーし、スクリプトエディタに貼り付け、プロジェクトを保存します。
function deleteEmptyRows() {
// アクティブなシートを取得
var sheet = SpreadsheetApp.getActiveSheet();
// シート内のデータが存在する範囲を取得
var dataRange = sheet.getDataRange();
// データ範囲内の値を2次元配列として取得
var values = dataRange.getValues();
// 配列を下から上に向かってループ
for (var i = values.length - 1; i >= 0; i--) {
// 現在の行のすべてのセルが空白かどうかをチェック
if (values[i].every(function(cell) { return cell === ""; })) {
// 空白行を削除
sheet.deleteRow(i + 1);
}
}
}
スクリプトエディターのメニューバーで「deleteEmptyRows」が選択されていることを確認し、「実行」ボタンを左クリックします。
スクリプトを実行すると、スプレッドシートの空白行が削除されます。
3. GASを使って空白セルを自動で削除する方法
Google Apps Script (GAS)を使用して、空白セルの削除を自動化することもできます。
以下のスクリプトを使用すると、スプレッドシートの空白セルを削除後、既存のセルを上に移動するという処理を自動で実行できます。
function deleteEmptyCellsAndShiftUp() {
// アクティブなシートを取得
var sheet = SpreadsheetApp.getActiveSheet();
// シート内のデータ範囲を取得
var dataRange = sheet.getDataRange();
// データ範囲の行数を取得
var numRows = dataRange.getNumRows();
// データ範囲の列数を取得
var numCols = dataRange.getNumColumns();
// 各列に対してループを実行
for (var col = 1; col <= numCols; col++) {
// 現在の列の範囲を取得
var columnRange = sheet.getRange(1, col, numRows, 1);
// 列の値を2次元配列として取得
var values = columnRange.getValues();
// 空でないセルだけをフィルタリング
var newValues = values.filter(function(cell) {
return cell[0] !== "";
});
// フィルタリングされた値を書き込むための新しい範囲を取得
var newColumnRange = sheet.getRange(1, col, newValues.length, 1);
// フィルタリングされた値を書き込み
newColumnRange.setValues(newValues);
// 元の行数より少ない場合、残りの部分をクリア
if (newValues.length < numRows) {
sheet.getRange(newValues.length + 1, col, numRows - newValues.length, 1).clear();
}
}
}
スクリプトを実行すると、空白セルを削除後、既存のセルが上に移動していることが確認できます。
スプレッドシートの空白セルを削除後、既存のセルを左に移動する処理を実行したい場合は、下記のスクリプトで自動化できます。
function deleteEmptyCellsAndShiftLeft() {
// アクティブなシートを取得
var sheet = SpreadsheetApp.getActiveSheet();
// シート内のデータ範囲を取得
var dataRange = sheet.getDataRange();
// データ範囲の行数を取得
var numRows = dataRange.getNumRows();
// データ範囲の列数を取得
var numCols = dataRange.getNumColumns();
// 各行に対してループを実行
for (var row = 1; row <= numRows; row++) {
// 現在の行の範囲を取得
var rowRange = sheet.getRange(row, 1, 1, numCols);
// 行の値を2次元配列として取得し、1次元配列に変換
var values = rowRange.getValues()[0];
// 空でないセルだけをフィルタリング
var newValues = values.filter(function(cell) {
return cell !== "";
});
// フィルタリング後に値が残っている場合のみ、新しい値を書き込む
if (newValues.length > 0) {
var newRowRange = sheet.getRange(row, 1, 1, newValues.length);
newRowRange.setValues([newValues]);
}
// 元の列数より少ない場合、残りの部分をクリア
if (newValues.length < numCols) {
sheet.getRange(row, newValues.length + 1, 1, numCols - newValues.length).clear();
}
}
}
4. まとめ
スプレッドシートの空白行や空白セルを自動で削除できると、データの整理や分析が容易になります。
今回ご紹介したFILTER関数やGASを活用することで、処理を自動化し、効率的なデータ管理を行うことができます。
ぜひ、ご自身のスプレッドシートでも試してみてください!
スプレッドシートで、テキストに含まれている不要な空白を削除したい場合は、こちらをご覧ください。
コメント