2016-05-02 3 views
-2

Я раньше не использовал макрос excel и мне просто задали задачу написать макрос, который перемещает завершенную задачу в нижнюю часть документа через 10 дней после введенной даты завершения (т. Е. Если она был закончен 14 апреля, и это была дата, введенная в колонку завершения, а затем вся строка перемещается в нижней части документа).Excel Macro Move Row to Bottom

Ниже приведена таблица, с которой я столкнулся.

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

Пожалуйста, см [как спросить] (http://stackoverflow.com/help/how-to-ask). – findwindow

+0

Я видел, как спросить сайт. Но я _extremely_ новый для макросов и не имею абсолютно никакого понятия, с чего начать или как это работает. Я попытался найти инструкции на других сайтах, и я все еще теряюсь. Это для работы - если бы я просто пытался понять это сам (без крайнего срока), я потратил бы больше времени на тренировку через пробную версию и ошибку, пока я не поправил или не застрял. Но поскольку это для работы, мне нужно, чтобы у меня не было времени на это. –

+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 

Я использовал запись макросов и скопировать вторую строку до конца таблицы. Затем я использовал «Найти & Выберите«> «Перейти к специальному»> выберите «Бланки»> «Ввод». Затем я удалил их (найдено здесь: http://www.exceltrick.com/how_to/delete-blank-rows-in-excel/). В записанной Macro я добавил переменную 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")
  • мимо него до конца таблицы
  • удаляет пустые строки

Вы можете взять этот макрос и отрегулировать его до лет ур. Петля над строками, и если дата (из столбца1) минус дата (из столбца5) больше 10, то копируйте, иначе ничего не делайте.

Я надеюсь, что это помогает