Я использую Excel 2007. У меня есть файл Excel, в котором ячейка A1 показывает дату, а ячейка B1 показывает сумму на листе 1. Мне нужно автоматически обновить дату в А1 и сумму В1 в базе данных на листе 2. База данных на листе 2 представляет собой ссылку на ячейки A1 и B1 на листе 1 с помощью Vlookup, выбрав дату в A1 в качестве значения поиска. Файл Excel используется ежедневно, а содержимое ячеек A1 и B1 будет меняться ежедневно. На листе 2 нужно будет записать все даты и суммы в ячейках A1 и B1 за один год

Моя проблема :
1. Как мне построить свою базу данных, чтобы фиксировать предыдущую дату и сумму в A1 и B1 ежедневно, потому что даты в A1 постоянно меняются, так как они являются ключевыми на ежедневной основе.

Например :-

14.03.2015 (ячейка A1) в ячейке B1 - 3333 доллара. Следовательно, база данных фиксирует дату 14/3/2015 и 3333 доллара на листе 2 в базе данных.

На следующий день, 15.03.2015, содержимое ячейки A1 теперь изменено на 15.03.2015, а B1 показывает цифру в 5555 долларов.

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

Честно говоря, я не знаю VBA.

2 ответа2

1

Это сделано только немного сложнее, потому что вы хотите скопировать две ячейки. Как правило, вы можете использовать событие Worksheet_Change для перехвата при каждом изменении ячейки. Однако вы хотите подождать, пока обе ячейки не будут изменены. Вместо того, чтобы применять какое-то правило, при котором вы должны изменить их в правильном порядке, а затем просто наблюдать за последней ячейкой, я написал это, чтобы дождаться изменения ячейки C1 . Я думал, что ваши пользователи могут отредактировать A1 и B1 а затем ввести что-нибудь в C1 и код сработает. Вы можете использовать Data Validation, чтобы добавить раскрывающийся список к C1 котором есть только одна опция, например "Перейти". Приведенный ниже код будет копировать значения A1 и B1 в последнюю строку на листе 2 всякий раз, когда значение C1 изменяется, а затем очищать это значение от C1 .

Откройте редактор VBA (Alt+F11 - один из методов). Найдите лист 1 в окне Project Explorer слева (он уже должен быть там с древовидным меню, показывающим все открытые книги и рабочие листы внутри них). Дважды щелкните по листу, чтобы открыть его окно кода. Скопируйте и вставьте приведенный ниже код: (Возможно, вам придется отредактировать строку Worksheets("Sheet2") если "Sheet2" не является фактическим именем вашего второго рабочего листа, в который вы хотите скопировать данные.)

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r As Long
    If Not Intersect(Target, Range("C1")) Is Nothing Then
        With Worksheets("Sheet2")
            r = .Range("A" & .Rows.Count).End(xlUp).Row + 1
            .Range("A" & r).Value = Range("A1").Value
            .Range("B" & r).Value = Range("B1").Value
        End With
        Application.EnableEvents = False
            Range("C1").ClearContents
        Application.EnableEvents = True
    End If
End Sub

(Для наркоманов VBA: я обычно предпочитаю использовать Cells а не Range но это не так быстро понятно, поэтому я выбрал Range .)

-1

Если вы не знаете и не можете освоить инструменты для выполнения работы, ваша единственная альтернатива - сделать это вручную.

Затем запишите шаги, которые вы должны были сделать вручную, - это будет ваша схема, как автоматизировать это.

Затем запустите Googling, как создать простой макрос VBA, который будет автоматизировать шаги, которые вы записали.

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