Excel / VBA - копировать и вставлять данные в лист в определенной строке на основе даты - PullRequest
1 голос
/ 10 августа 2011

У меня есть довольно простой вопрос.

У меня есть отчет, который обновляется ежедневно.Определенный диапазон (B5: AC5) из одного рабочего листа необходимо копировать на другой рабочий лист ежедневно.Это не нужно делать автоматически, я просто хотел бы добавить код для него в созданный мной макрос форматирования.

У меня есть две проблемы с этим:

  1. Я хочу, чтобы данные вставлялись в строку, соответствующую этому конкретному дню.Столбец А в таблице «Ежедневно» содержит список рабочих дней для этого месяца.Так что все, что мне нужно, это чтобы макрос нашел сегодняшнюю дату в столбце A в «Daily» и вставил b5: AC5 из «Matrix» в b?: Ac?в этой строке "Ежедневно".

  2. Мне также нужно, чтобы это была специальная вставка, только для вставляемых значений.

IЯ очень новичок в VB, но обычно могу следовать логике кода довольно хорошо.Дайте мне знать, если вам нужна дополнительная информация от меня.Большое вам спасибо!

1 Ответ

1 голос
/ 10 августа 2011

Предполагая, что ваш диапазон всегда будет в B5: AC5, вот что я придумал:

Sub FindToday()

    Dim FoundDate As Range
    Set FoundDate = Worksheets("Daily").Columns("A").Find(DateValue(Now), LookIn:=xlValues, lookat:=xlWhole)

    If Not FoundDate Is Nothing Then ' if we don't find the date, simply skip. 
        Worksheets("Matrix").Range("B5:AC5").Copy
        FoundDate.Offset(0, 1).PasteSpecial xlPasteValues, xlPasteSpecialOperationNone, False, False ' You can see that the first argument in PasteSpecial is set to only paste values. 

   End If
End Sub

Я проверил это как мог, предоставив вашу информацию. Я поместил набор возрастающих чисел в диапазон B5: AC5 с формулами, поместил набор возрастающих дат на один месяц в ежедневный лист, и он, кажется, делает то, что вы ищете.

Надеюсь, это поможет.

...