範囲選択したセルを、データのあるセルだけ左詰めに移動させたい

選択した範囲内で、空白のセルを除いたセルをすべて左揃えにする方法がわからなく、困っています。

書式を左詰めにしたいというわけではなく、セル自体を移動させたいというのがこちらの希望となります。
(「A-E列を対象として範囲指定を行い」「B列、C列にしかデータが無い場合」「A列とB列にデータを移動させたい」)

画像の図1から図2の状態に表示させたい。

ご教授いただければ幸いです。よろしくお願いします。

EXCELですと、ジャンプ機能を使って空白セルを選択した後、削除から左へシフトで実行できるみたいですが
Calcの場合、ジャンプ機能がありませんので空白セルをマクロで選択することになると思います。

また、選択した複数の空白セルから削除を選んでも「列全体の削除」や「行全体の削除」のみが有効になってしまい、シフトさせることができません。

そこで、単純に行単位で左へシフトする(行の中で左へ詰める)のであれば、Calcでの作業から外れて裏技的になってしまいますが一旦CSVファイルで保存し、そのファイルをEditorで置換するのはいかがでしょう?
空セルの場合、CSVの値区切りが,(カンマ2つ)になっていますので、それを,(カンマ)に置き換え保存するだけです。

そのCSVファイルをCalcで開けば左詰めの表になっていると思います。

並び替えを行指定で1行ずつ行う方法もありかと思いますが、
small() 関数を使う方法も可能です。順番の参照用に、1からの自然数を記入するひと手間がかかります。
=IFERROR(SMALL($B24:$E24,C$30),"") というような式を入れてやります。
空欄はエラーになるので、エラーが出ると「""」空欄を出力させます。

画像の説明

コピー&貼り付けで出来ます

A B C D E
2 a 1 2 3 4
3 b 1 2
4 c 1 2
5 d 1 2 3
6 e 1 2 3
  1. 表題列(A列)を含めてコピーする (A2:E6) [ Ctrl + C ]
  2. 貼り付けたいセル位置にカーソルを移動
  3. 形式を選択して貼り付け > 書式設定されていないテキスト [ Ctrl + Alt + Shift + V ]
  4. 区切りオプションの指定位置をチェック
  • [x] タブ
  • [x] 空のフィールドを省く

として OK ボタンを押すと左に寄せて貼り付けられます

今回の場合、表題列を含めないと、サンプルの最下行のように最左データ (B6) が空白の場合、左に寄せてくれません
連続した区切り記号が一つにまとめられるだけの仕様で、行頭に残された一つの区切り記号は削除されないためと考えられます

2 Likes