2017-08-02 194 views
0

我想从excel列中重新获取一些重复的值,但在此之前我需要对其进行排序,以便它不会Remowe出现任何我想拥有的内容。我得到的问题是空白单元格,我希望它们被重新装入,但是它们仍然保留在顶部的任何排序。这是我的排序代码,任何想法?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 

我需要一个解决方案,我可以使用第二个键将它们(空白)排序到底部。我不需要一个解决方案,我删除它们,因为一些重复项在这一列中只有空白值,如果他们没有任何替代项,我仍然需要保留它们。

+0

您正在使用一列或基于特定列对整个表进行排序? –

+0

我排序了一个基于这两列的整个表格,先是列A降序,然后作为第二个源我把P列在我想要的地方,如果有可能只保留一些文字的Ps,所以当我将Remix拷贝到只有一个在P中的文本将不会被删除 – Vedad

+0

而空格仅位于一列中,对吗?你只想把它们移到底部? –

回答

-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

我不想删除它们,我希望它们在第二个键的底部,因为我还需要一些空白 – Vedad

0

以下是我会做:检查是否我们在指定的列空白,如果是,将整个行至底部,并删除它(所以整个表向上移动一行)。重复,直到指定列顶部有非空单元格。

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的列,空的,但没有任何选项,只是通过第二次排序将空白留在底部我的意思是常见的VBA中必须有一些指令并不是什么大不了的事? – Vedad

+0

我不这么认为,它是如何进行排序的,先保留空白(没有任何值在任何值之前)。你可以降序而不是升序(这会使空白处于底部,但我认为这不是你所需要的)。您需要一些解决方法,比如我发布的解决方案。 –

+0

这并不这样做,但我排序它保持空白升序或降序像排序不工作 – Vedad

相关问题