1

У меня есть две рабочие тетради. Один отправляется по электронной почте и имеет диаграмму с колонкой, заполненной датами, т.е. с 11 января по 30 ноября 2010 года. На этот день график заполняется рядом данных.

Вторая рабочая книга имеет диаграмму с колонкой, заполненной также датами. Мне нужна помощь в создании макроса, который будет смотреть на дату из рабочей книги2 и сопоставлять эту дату с рабочей книгой1, отправлять по электронной почте, копировать строку данных из рабочей книги1 и вставлять строку в рабочую книгу2 в строку с такой же датой. , Никогда не создавал макрос, поэтому любая помощь будет принята с благодарностью

1 ответ1

0

Я полагаю, что формула VLOOKUP будет проще, чем макрос в этом случае. После заполнения формулы вниз по столбцу выполните COPY & PASTE.Values, чтобы удалить формулу.

Отредактировано в примере VLOOKUP: вам нужно будет составить таблицу дат в вашей рабочей книге, идентичную датам в электронной книге. отрегулируйте следующее, чтобы соответствовать вашей ситуации

A1 = значение поиска (дата?) из таблицы, где вы хотите значения в электронной почте
[Example.xlsx] = это название вашей книги по электронной почте
Лист1! = имя электронной таблицы в электронной книге с таблицей данных
$ A $ 1:$ B $ 30 = полный диапазон данных в электронной книге.
2 = столбец в диапазоне данных, из которого мы хотим получить возвращаемое значение (столбец 2 в A и B)
FALSE = мы хотим получить точное совпадение со значением поиска в данных электронной почты

=VLOOKUP(A1,[Example.xlsx]Sheet1!$A$1:$B$30,2,FALSE)

Однако, чтобы упростить задачу, если вы не выше, оставив одну книгу в качестве шаблона для получения данных, сработает следующее. Просто поместите его в модуль шаблона книги и сохраните его. При получении нового электронного письма откройте шаблон, откройте рабочую книгу электронной почты и затем активируйте макрос из рабочей книги электронной почты.

Допущения в коде:
1: в электронной книге данные начинаются с ячейки A1
2: в книге макроса / шаблона данные начинаются в ячейке A1
Если любое из этих допущений неверно, скорректируйте начальные значения для объектов L1 и / или Cells (первое значение, L1, это строка, а второе число это столбец; A = 1)

Sub CopyData()
    Dim All As New Collection
    Dim One As Variant, L1 As Integer, L2 As Integer
    Dim TW As Workbook, EW As Workbook

    Set TW = ThisWorkbook
    Set EW = ActiveWorkbook

    L1 = 15
    Do Until Cells(L1, 2).Value = ""
        ReDim One(0 To 1)
        One(0) = Cells(L1, 2).Value
        One(1) = Cells(L1, 3).Value
        All.Add One
        Erase One
        L1 = L1 + 1
    Loop

    TW.Activate
    L1 = 15
    Do Until Cells(L1, 2).Value = ""
        For L2 = 1 To All.Count
            One = All(L2)
            If One(0) = Cells(L1, 2).Value Then
                Cells(L1, 3).Value = One(1)
                Erase One
                Exit For
            Else
                Erase One
            End If
        Next L2
        L1 = L1 + 1
    Loop
End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .