Googleスプレッドシートを使っていて、とりあえずまとめてデータ入力してから最後に空白セルを削除して左詰めしたいことってありますよね。
このブログでは最近、売買シグナルの表に各銘柄のテーマの情報を追加しました。このテーマの情報を追加するために、もとにしている銘柄リストに該当するテーマがあれば書いていっているのですが、大企業になればなるほど該当するテーマが多くて選択しているセルを上下だけじゃなくて左右にも動かす必要が出てたんですよね。(たとえばトヨタ自動車〈7203〉や日立製作所〈6501〉)
「とりあえずテーマ入力のときは上下移動だけにして、最後にまとめて左詰めできれば作業が効率良くなるのでは?」と思ってChatGPTに聞いてみたら教えてくれたので、実際にやってみたいと思います。
方法その1:Google Apps Scriptを使う(おすすめ)
最初にChatGPTにおすすめされた方法がこれです。
親切に、手順も教えてくれました。
提案してくれたスクリプト
function removeBlanksAndShiftLeft() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const range = sheet.getActiveRange(); // 選択中の範囲
const values = range.getValues();
const newValues = values.map(row => {
const filtered = row.filter(cell => cell !== "");
const emptyCount = row.length - filtered.length;
return filtered.concat(Array(emptyCount).fill("")); // 空白を右に
});
range.setValues(newValues);
}
手順
- メニューから「拡張機能」→「Apps Script」を開く。
- 上記のコードを貼り付けて保存。
- スプレッドシートに戻り、スクリプトを実行(初回は認証が必要)。
- 対象の範囲を選択してから実行すれば、その範囲の中で空白が削除されて左に詰まります。
方法その2:関数で処理して別セルに表示(動的)
ふたつ目は関数を使って処理する方法でした。
提案してくれた関数
=TRANSPOSE(FILTER(TRANSPOSE(A1:E1), TRANSPOSE(A1:E1) <> ""))
- 横一列のデータ(例:A1:E1)に対して空白を除いた値を左に詰めて表示する。
- この方法は元のデータは変更せずに新しいセルに表示する方法。
方法その3:手動+並べ替え(非効率)
最後はパワープレーです(笑)数が少ないとこれでいけますが、何百、何千とあるデータに対しては相当な覚悟が必要になります。
手順についても特に書かれることはなく、👇のように書かれていました。
- 範囲を選択
- 「データ」→「範囲を並べ替え」→並び替え条件を指定(空白が右に行くように)
- ただし、これは列単位なので「横方向」は対象外。行単位でやりたい場合には非効率。
強調して非効率と教えてくれています。
ChatGPTの結論
つまり、ChatGPTの結論は👇でした。
- 複数の行にわたって横方向の空白を左に詰めたいなら Apps Script が最も柔軟で確実です。
- 関数だけで済ませたいなら、
FILTER
+TRANSPOSE
を使う方法もありますが、元の範囲を直接加工するには向きません。
このChatGPTの提案を見ると、まずはApps Scriptを使ってみたくなりますね。
実際にApps Scriptを実行してみた
手順も書いてくれているので、Apps Scriptでやってみました。
まずは追加するテーマを用意します。ニッスイ<1332>とマルハニチロ<1333>に”水産”のテーマを追加してみます。

G列に追加してみました。
これがApps Script実行後にはF列に移動していることが期待です。
まずは、今回のスクリプトの実行対象とする範囲を選択します。

それから、Apps Scriptを開いてスクリプトを作成していきます。

”拡張機能”タブを開くと”Apps Script”がありました。
これを選択します。
選択すると開くウィンドウ内に、スクリプトをコピーして貼り付けます(名前は適当に変えてみました)。

準備ができたら、”実行”をします。

ここで、初回実行時には認証が必要になります。

”権限を確認”を選択します。
その後、アカウントの選択を行います。

このウィンドウが出た場合には”詳細”を選択してください。
そこに”{先ほど作成したスクリプト名}に移動"とあるので選択します。

すると、アカウントへのアクセスを求められるので、続行します。

正常に認証ができると、スクリプトを実行することができ、ログも出力されます。
スクリプトの実行が成功すると、下記図のように”実行終了”のログが出力します。

スプレッドシートの結果は・・・?

期待通りにF列に”水産”のセルが移動しています!
これで成功です!
まとめ
今回は、Googleスプレッドシートを使って、まとめて空白セルを削除して左詰めにする処理を実行する方法についてChatGPTに聞いて、スクリプトでまとめて処理を実行してみました。
そんなに難しい手順は必要なく、比較的簡単に実行できました。
これで、銘柄リストのテーマ情報の追加の作業の時間をかなり短縮できるようになります。
使えそうな情報があれば、参考にしてみてください。
