如果它们相同,则删除列中的最后一个值

时间:2013-06-12 09:40:32

标签: excel-vba vba excel

由于我不熟悉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

由于

1 个答案:

答案 0 :(得分: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