2013-06-12 66 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 
相關問題