
例えば、Excelのデータで各セルに次のような入力があります。
A A A B C D
A A B C D
A B C D
これを
A A A B C D
A A B C D
A B C D
というように、空白のセルを右方向に削除し、一番右に入力のあるセルの列にすべての行を揃えたいです。
500行以上あるデータなので、一気にできる方法を探しています。
セル選択後、削除する時に「左方向にシフト」や「上方向にシフト」はあっても、「右方向にシフト」がないため、データ処理に苦戦しています。
マクロの知識がないので、マクロを使わない方法(複雑すぎなければ関数でも・・・)があれば嬉しいです。
最終的には、
A B C D
A B C D
A B C D
とまとめる予定のデータです。
拙い説明で申し訳ありませんが、
もし、ご存知の方がいらっしゃっいましたら、よろしくお願いいたします。
No.3
- 回答日時:
元データを最終データにするための別解
添付図参照
1.H列は全て数値の 0 を入力
2.セル I1 に式 =(B1=A1)*(B1<>"")を入力して、此れを右方にズズーッとM列までドラッグ&ペースト
3.セル O1 に式 =IF(H1,1,A1&"") を入力して、此れを右方にズズーッとT列までドラッグ&ペースト
4.範囲 H1:T1 を下方にズズーッとドラッグ&ペースト
5.O~T列全体を選択して、[コピー]→[値の貼り付け]を実行した後、
6.[ジャンプ]→[セル選択]で[定数]の[数値]を選択して[OK]をクリック
後は、お馴染みの『削除する時に「左方向にシフト」』を実行すればよろしいかと。

Excelでも出来ないことがあるんではないかと思ってしまったのが浅かったです。
今回は、Excelの奥深さがとても分かりました。
それにしても、ここで回答してくださる皆さんの知識や技量はすごいですね。
ここで質問して良かったです。
ありがとうございました。
No.2
- 回答日時:
こんばんは!
>マクロの知識がないので、マクロを使わない方法・・・
とありますが、関数でやる場合は作業用のSheet等を使用すれば可能だと思います。
ただ、敢えてお望みでないVBAでの一例を投稿してみます。
関数での方法をご希望のようですので、当然無視してもらっても構いません。
画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。
データは1行目からあるとしています。
Sub 右寄せ() 'この行から
Dim i As Long, j As Long, k As Long
j = ActiveSheet.UsedRange.Columns.Count
For i = 1 To ActiveSheet.usederange.Rows.Count
k = Cells(i, Columns.Count).End(xlToLeft).Column
If k <> j Then
Cells(i, 1).Resize(1, k).Cut Cells(i, j - k + 1)
End If
Next i
End Sub
Sub 重複削除()
Dim i As Long, j As Long
On Error Resume Next
For i = 1 To ActiveSheet.UsedRange.Rows.Count
For j = Cells(i, Columns.Count).End(xlToLeft).Column To 1 Step -1
If Cells(i, j) = "" Or WorksheetFunction.CountIf(Rows(i), Cells(i, j)) > 1 Then
Cells(i, j).Delete shift:=xlToLeft
End If
Next j
Next i
Cells(1, 1).CurrentRegion.SpecialCells(xlCellTypeBlanks).Delete shift:=xlToLeft
End Sub 'この行まで
二つ目の「重複削除」のマクロを実行すると、
最終的にまとめる予定の表示になると思います。
※ 右寄せのマクロと重複削除して左寄せのマクロ二つを載せてみました。
※ 一旦マクロを実行すると元に戻せませんので別Sheetでマクロをためしてみてください。
あくまで参考程度で、こんな感じでできる!と思ってもらえるだけでOKです。m(_ _)m
すごいですね、マクロ・・・
やはり覚えるべきはマクロ、ですね。
時間はかかりそうですが、いつか習得したいものです。
回答を寄せていただき、ありがとございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel vbaについて知恵もしくは、コード教えて下さいm(__)m ① 表にあるデータをコピー、 2 2022/09/01 23:57
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) 【Excel】指定した文字列に該当する行を重複しないようにリスト 3 2022/03/30 12:27
- Excel(エクセル) エクセルについて教えてください。 2 2023/06/14 11:11
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Excel(エクセル) エクセルでセルを挿入するとき、デフォルトのシフト方向を変更したい 3 2023/08/02 18:17
- Visual Basic(VBA) VBA ドロップダウンリストを残して値のみクリア 2 2022/10/27 05:42
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel(VBA)データ入力に応じて...
-
エクセルで、行ごとの並び替え...
-
昨日、エクセルVBAで、隣のセル...
-
条件に応じて特定の行を非表示...
-
特定のシートの削除を禁止した...
-
別シート参照のセルをシート毎...
-
EXCEL:同じセルへどんどん足し...
-
特定のセルだけ結果がおかしい...
-
エクセルの複数シートの保護を...
-
エクセルで前シートを参照して...
-
Excel で複数シートを1つのシー...
-
至急お願いします。エクセルシ...
-
シート名を参照して、そのシー...
-
Accessのスプレッドシートエク...
-
エクセル 計算式も入っていない...
-
Excelシートの保護以外で編集禁...
-
エクセルのマクロ設定について...
-
マクロの入ったシートをコピー...
-
エクセルVBAで、シートをコピー...
-
エクセルのグループ名ごとに別...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel2007で、太字にした行のみ...
-
Excel にて非表示行を探すワー...
-
条件に応じて特定の行を非表示...
-
excel ある部分だけをコピペし...
-
エクセルで全ての数字間にカン...
-
エクセル VBA 小数点を含む数字...
-
Excel2007 セルを右方向に削除...
-
値貼り付けをしても書式も貼り...
-
Excel(VBA)データ入力に応じて...
-
「マクロ」の足し算の式を教え...
-
Excelでセル内の数式は残し値だ...
-
wordのvbaでハイパーリンク設定...
-
エクセル2003でマクロをおこな...
-
VBA コピーを有効行までループ...
-
エクセルで特定の行を消して間...
-
EXCEL マクロで「キーワード入...
-
エクセル マクロ オートシェ...
-
yyyy/mm/ddの日付に一括変換す...
-
Excelで周期的に列を削除する方法
-
並べ替えのマクロで対象行の範...
おすすめ情報