2017-03-03 5 views
-3

次のように6行のExcelシートがあります(最初の列は実際のデータではなく行の名前を示すためのものです)。行を移動するExcelマクロ

A1 1 2 3 4 5 6 7 8 9 10                                 
A2                                           
A3 11 12 13 14 15 16 17 18 19 20                                 
A4 21 22 23 24 25 26 27 28 29 30                                 
A5                                           
A6 31 32 33 34 35 36 37 38 39 40 

私がしたいのは、データを含むすべての行をシートの一番上に移動するマクロを作成することです。私は行を削除したくありません。結果は次のとおりです。

A1 1 2 3 4 5 6 7 8 9 10 
A2 11 12 13 14 15 16 17 18 19 20 
A3 21 22 23 24 25 26 27 28 29 30 
A4 31 32 33 34 35 36 37 38 39 40 
A5          
A6 

同様の効果がある空白行を削除する簡単なマクロがありますが、代わりにデータを移動したいと思います。

Sub RemoveEmptyRows() 
On Error Resume Next 
    Range("Sheet1!A1:Sheet1!A6").Select 
    Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Delete 
End Sub 

これを理解するために必要なその他の情報をお知らせください。

+3

列の1つにデータを並べ替えるだけで、空の行が下部に移動します。 –

+0

これまでに何を試しましたか? –

+0

@ScottCraner:これは私が取り組んでいる大きな問題の単なる例です。このデータは、ロックされた非表示のシート上に表示され、ユーザーは手動でソートすることはできません。 – macaday

答えて

0

これは私にとって完璧に機能しました。

Sub SortData() 
Sheets("Data").Select 
Cells.Select 
Selection.AutoFilter Field:=1, Criteria1:="" 
ActiveSheet.AutoFilter.Range.Offset(1, 0).Rows.SpecialCells(xlCellTypeVisible).Delete (xlShiftUp) 
ActiveSheet.AutoFilterMode = False 
Range("A1").Select 
End Sub 
0

あなたは空白行を削除するソート方法を使用しようとしている場合、あなたは(これが重要な場合)の順序を維持するために2種類を行う必要があります。

まず、キーが入っている列を追加して(1,2,3,4,5,6など)、他の列の1つをソートします(空白行を一番下に並べます)。キーがある列は、空の行を持つキーを削除または選択解除した後、項目を空の行なしで順番に戻します。

データをコピーして貼り付ける場合は、行1が空白であるかどうかをチェックし、行2から7を行1から6にコピーして(行7を空白にして)、行2 〜5(行2の場合は3〜7行をコピーします)。 行6を確認する必要はありません。行1〜5が一杯になると、行6は完全または空白のいずれかになります。行1から5のいずれかが空白の場合、行6は最初のコピーからすでに空白になっています。 1行目から4行目に2つの空白がある場合は、行5も空白になります。

関連する問題