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

谢谢

4

1 回答 1

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
于 2013-06-12T12:47:17.660 回答