2013-06-12 69 views
0

由于我不熟悉Excel VBA,这可能是一个标准问题,尽管我没有找到类似的问题。删除列中的最后一个值(如果它们相同)

我有大量的列K或者是空的,或者它们在同一行R(它小于65000)结束。 对于大部分(未分类)非空列的最后r行(行R-R + 1,R-R + 2,R-R + 3,...,R)具有相同的值。 然后,我想删除最后一个r-1行的值,并将值保留在R-r + 1行中。 所以我希望把在Excel VBA下面的“原始”代码:

find K and R by determining range of sheet 
for k=1:K 
    if cell(R,k)<>empty 
     r=1; 
     while cell(R-r,k)==cell(R,k) 
      r=r+1; 
     end 
     cell(R-r+2,k) = '', cell(R-r+3,k) = '', ..., cell(R,k) = ''; 
    end 
end 

例如,如果列k的输入是

4 
3 
3 
8 
4 
8 
8 
8 
8 

那么宏执行后的输出

4 
3 
3 
8 
4 
8 

感谢

回答

0

也许:

Sub ColumnCleaner() 
    Dim col As Range, K As Long 
    Dim cl As Range, N As Long, NN As Long 
    Dim wf As WorksheetFunction 
    Set wf = Application.WorksheetFunction 
    For Each col In ActiveSheet.UsedRange.Columns 
     K = col.Column 
     If wf.CountA(col) <> 0 Then 
      NN = Cells(Rows.Count, K).End(xlUp).Row 
      For N = NN To 2 Step -1 
       If Cells(N, K).Value = Cells(N - 1, K).Value Then 
        Cells(N, K).Clear 
       Else 
        Exit For 
       End If 
      Next N 
     End If 
    Next col 
End Sub 
相关问题