Создание макроса для сортировки элементов по введенной дате (результаты запускаются из формулы)

Создание макроса для сортировки элементов по введенной дате (результаты запускаются из формулы)

У меня есть Лист 1, на котором я ввожу новые данные на рабочий лист, а на моем Справочном листе я извлекаю те же значения из Листа 1, чтобы я мог сортировать их по времени ввода. Моя цель — иметь отображение на Листе 1, которое показывает последние 10 элементов, введенных на Листе 1. Я использовал формулу ниже, чтобы отсортировать мой Справочный лист по дате, но поскольку я использую формулу для извлечения значений, она не срабатывает. Можно ли объединить это с новым макросом, чтобы я мог вводить данные в одном месте и сортировать их в другом месте?

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim A As Range
    Dim AB As Range
    Set A = Range("A:A")
    Set AB = Range("A:B")

    If Intersect(Target, A) Is Nothing Then Exit Sub
    If Target.Count > 1 Then Exit Sub
    Application.EnableEvents = False
        Target.Offset(0, 1) = Now
        AB.Sort Key1:=Range("B1"), Order1:=xlDescending, Header:=xlNo, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
    Application.EnableEvents = True
End Sub

решение1

Похоже, что ваша проблема в том, что ваш макрокод не срабатывает для изменения в одном листе, потому что лист изменяется только в силу ссылки на формулу. Если это так, не можете ли вы поместить код (или вызвать любые необходимые вам Subs) изWorkbook_SheetChange()Вместо этого? (в «Рабочей тетради»ЛистИзменения()событие сработает, когда вы изменителюбойЛист). Вы можете проверить лист, который был изменен, используяИмя Ш.из этой подпрограммы. И получить адрес ячейки изменения, используяЦелевой адрес.

Связанный контент