Excel宏移动行到底部

时间:2016-05-02 19:20:41

标签: excel excel-vba vba

我以前从未使用过excel宏,只是编写了一个宏,它将完成的任务移动到输入完成日期后10天的文档底部(即如果它已于4月14日结束,这是输入完成列的日期,然后整行被移动到文档的底部。)

以下是我练习的表格。

Current_Date  Id  Samp1 Samp2 Samp3 Samp4 Samp5 Samp6 Completed_Date Completed_Plus_10  Real_C+10  Post
5/2/2016       1    a1    ab1   b1   bc1    c1    1     2/18/2016        2/28/2016      2/28/2016    Y 
5/2/2016       2    a2    ab2   b2   bc2    c2    2     1/10/1900           N
5/2/2016       3    a3    ab3   b3   bc3    c3    3     1/10/1900           N
5/2/2016       4    a4    ab4   b4   bc4    c4    4     4/21/2016        5/1/2016       5/1/2016     Y
5/2/2016       5    a5    ab5   b5   bc5    c5    5     1/10/1900           N
5/2/2016       6    a6    ab6   b6   bc6    c6    6     1/10/1900           N
5/2/2016       7    a7    ab7   b7   bc7    c7    7     3/14/2016        3/24/2016      3/24/2016    Y
5/2/2016       8    a8    ab8   b8   bc8    c8    8     1/10/1900           N
5/2/2016       9    a9    ab9   b9   bc9    c9    9     1/10/1900           N
5/2/2016      10   a10   ab10  b10  bc10   c10   10     5/2/2016         5/12/2016      5/12/2016    N
5/2/2016      11   a11   ab11  b11  bc11   c11   11     1/10/1900           N
5/2/2016      12   a12   ab12  b12  bc12   c12   12     1/10/1900           N
5/2/2016      13   a13   ab13  b13  bc13   c13   13     1/10/1900           N
5/2/2016      14   a14   ab14  b14  bc14   c14   14     1/10/1900           N
5/2/2016      15   a15   ab15  b15  bc15   c15   15     1/10/1900           N
5/2/2016      16   a16   ab16  b16  bc16   c16   16     1/10/1900           N
5/2/2016      17   a17   ab17  b17  bc17   c17   17     1/10/1900           N
5/2/2016      18   a18   ab18  b18  bc18   c18   18     1/10/1900           N
5/2/2016      19   a19   ab19  b19  bc19   c19   19     1/10/1900           N
5/2/2016      20   a20   ab20  b20  bc20   c20   20     1/10/1900           N

1 个答案:

答案 0 :(得分:0)

这是一个小宏,因此您不必在空白页面上开始: 我的表格如下:

Date        id  samp1   samp2   Complete date
05.02.2016  2   abc     abc     asd
10.02.2016  4   ghi     ghi     01.02.2016
07.02.2016  3   def     def     asd
11.05.2016  5   jkl     jkl     06.05.2016

我使用宏录制器并将第二行复制到表的末尾。然后我用“Find& Select”> “去特别”>选择“空白”> “输入”。然后我删除了它们(在这里找到:http://www.exceltrick.com/how_to/delete-blank-rows-in-excel/)。 在录制的宏中,我添加了变量LastRow(使其动态化)

Sub mv()
'
' mv Makro
'
' Tastenkombination: Strg+Umschalt+A
'
    Dim LastRow As Long
    LastRow = Cells(Rows.Count, "A").End(xlUp).Row

    'here you sould add a loop over the rows and an the if statement
    Range("A3:E3").Select
    Selection.Cut
    Range("A" & LastRow + 1).Select
    ActiveSheet.Paste
    'and here the end of the if statement and the loop        

    Range("A1").Select
    Application.CommandBars("Selection and Visibility").Visible = False
    Selection.SpecialCells(xlCellTypeBlanks).Select
    Selection.EntireRow.delete

End Sub

宏基本上做了什么:

  • 复制范围(“A3:E3”)
  • 过去到表的末尾
  • 删除空行

您可以使用此宏并将其调整为您的问题。循环遍历行,如果日期(从column1)减去日期(从column5)大于10,则复制,否则不执行任何操作。

我希望这会有所帮助