由于我不熟悉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 :(得分: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