宏将最旧的记录移动到新工作表

时间:2018-04-05 16:09:58

标签: excel vba

我一直在浏览网站,但还没有找到类似的情况。具体来说,我要做的是以下内容。

使用包含三列的表

Number      Priority Age
1234567890  Low      1
1234567890  Low      2
1234567890  High     3
1234567890  High     4

我想要一个VBA宏,它将首先复制最旧的记录(由年龄列确定),将其发送到当前工作表,然后从主工作表中删除该记录,然后保存Excel文件。

同样,我还没有找到任何附近的东西,因为我见过的所有内容都会复制所有行而不是细节。

任何帮助都会很棒!

编辑:这是我尝试使用的VBA代码,但我一直得到相同的结果(所有行都被复制)。

code

Sub MyMacro()
Dim i As Long, iMatches As Long
Dim aTokens() As String: aTokens = Split("10", ",")
For Each cell In Sheets("master").Range("A:A")
    If (Len(cell.Value) = 0) Then Exit For
        For i = 0 To UBound(aTokens)
            If InStr(1, cell.Value, aTokens(i), vbTextCompare) Then
                iMatches = (iMatches + 1)
                Sheets("master").Rows(cell.Row).Copy Sheets("top10").Rows(iMatches)
            End If
        Next
Next
End Sub

code

1 个答案:

答案 0 :(得分:0)

假设这只是想运行一次,这将有效。不确定为什么要使用数组。你的桌子有3列,但你说的是两个!无论如何,这是在你的桌子上工作。

Sub Move_Oldest()
Dim Rng As Range
Dim Lrow As Long
Dim Trow as long
Lrow = Sheets("top10").Range("a1000000").End(xlUp).Row
With Sheets("master")
    Set Rng = Intersect(.UsedRange, .Columns(3))
    If Not Rng Is Nothing Then
         trow = Application.Match(Application.Max(Rng), Rng, 0)
        .Cells(trow, 1).Resize(, 3).Copy Sheets("top10").Cells(Lrow + 1, 1)
        .rows(trow).delete
    End If
End With
End Sub