2017-08-02 18 views
0

Excelの列から重複した値を再確認したいが、その前に並べ替える必要があるため、必要なものをすべて削除する必要があります。私が得た問題は、空白のセルであり、私はそれらを喚起したいが、彼らはトップのどのソートにもとどまっている。ここで私のソートコードは、任意のアイデアですか?VBAブランクセルをボトムに並べ替える

ABC.Range("A1", "AF" & lngLastRow).Sort key1:=ABC.Range("A1:A" & lngLastRow), _ 
    order1:=xlDescending, key2:=ABC.Range("P1:P" & lngLastRow), _ 
    order2:=xlDescending, MatchCase:=False, Orientation:=xlTopToBottom, Header:=xlNo 

解決策が必要なのは、2番目のキーを使って(空白)を最下部に並べ替えることができます。私は重複のいくつかがこの列の空白の値しか持たないので、私はそれらを削除するソリューションは必要ありません、そして、彼らは何かalternativを持っていなければそれらを保持する必要があります。

+0

1つの列で作業しているか、特定の列に基づいてテーブル全体をソートしていますか? –

+0

私はこの2つのコラムに基づいて全体のテーブルをソートします。最初に列Aで下降し、2番目のソースとして私はcolummn Pを取っていました。 Pのテキストを含むものは削除されません – Vedad

+0

空白は1つの列にのみ配置されます。そしてあなたはそれらを底に動かすだけですか? –

答えて

-1

空白セルの削除を扱います。必要に応じて、シート名と列パラメータを変更します。

Dim i As Long 
Dim n As Long 

n = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row 

With Sheets("Sheet1") 
    For i = 1 To n 
     If .Cells(i, 1).Value = "" Then 
      .Cells(i, 1).EntireRow.Delete 
     End If 
    Next i 
End With 
+0

私はそれらを削除したくない私はまた、いくつかの空白が必要なので、私は2番目のキーの下部にそれらをしたい – Vedad

0

をここに私はそれを行うだろう方法は次のとおりです。私たちは、指定された列に空白がある場合は、チェックしている場合は、一番下に行全体を移動し、それを削除(そのテーブル全体1行上に移動する)。指定した列の上部に空でないセルがあるまで繰り返します。

Sub MoveBlanksToBottom() 
'you have to specify size of your table here 
Dim rows, columns, columnsWithBlanks As Long 
rows = 10 
columns = 4 
columnWithBlanks = 1 
'we will loop until the first row in specified column will be non empty 
Do While IsEmpty(Cells(1, columnWithBlanks)) 
    'copy entire row to the bottom 
    For i = 1 To columns 
     Cells(rows + 1, i).Value = Cells(1, i).Value 
    Next 
    'delete the row 
    Cells(1, 1).EntireRow.Delete 
Loop 

End Sub 

テーブルをソートした後は、Subを使用してください。

あなたはそれをより柔軟にするために、パラメータとしてテーブルのサイズを渡すことができます。

Sub MoveBlanksToBottom() 
'you have to specify size of your table here 
Dim rows, columns, columnsWithBlanks As Long 
rows = 10 
columns = 4 
columnWithBlanks = 1 

Sub MoveBlanksToBottom(rows As Long, columns As Long, columnsWithBlanks As Long) 

に置き換える必要があり、あなたはこのようにそれを呼び出すことができます。Call MoveBlanksToBottom(10, 4, 1)

+0

私はまた、私は空以外の値1と0を持つ別の列を追加するようにはるかに簡単な解決策を作ることができます空ですが、2番目の並べ替えで空白をちょうど保持するオプションはありません私は共通点がありますVBAのいくつかのcomandがある必要がありますか大きな問題ではないですか? – Vedad

+0

私はそうは思いません、それは仕分けの仕方で、空白を最初に残します(値は値の前にありません)。あなたは昇順ではなく降順で注文することができます(これは最下部に空白を残しますが、それはあなたが必要とするものではないと思います)。私が投稿したような回避策が必要です。 –

+0

それはしませんが、私はそれを並べ替えるかどうかは、ソートのように昇順または降順を空白を維持並べ替え – Vedad

関連する問題