Заполнение другого листа Excel на основе данных из другого листа (нужны ВПР, автозаполнение)

Вопрос или проблема

Я пытаюсь создать таблицу, которая по сути является списком покупок, но в формате инвентарного контроля. Другими словами, я заполняю “Да” или “Нет”, если, основываясь на количестве, у меня есть меньше определенного количества чего-то. Если да, то это добавит запись о товаре в список на другой таблице.

У меня это работает на одной ячейке списка, но когда я пытаюсь добавить новые данные в свой список инвентаризации, это заменяет данные в одной ячейке списка вместо того, чтобы заполнять остальные строки.

Для вашего понимания я включу скриншоты всего этого ниже:

Первая таблица с одной записью и выбрано “ДА”

Вид выпадающего списка (Да/Нет) на первой таблице

Список (первая ячейка заполнена правильно)

Первая таблица с двумя записями и выбрано “ДА”

Список (первая ячейка перезаписана неправильно)

Моя формула в A3 LIST: =VLOOKUP(Inventory!J$2,Inventory!A$2:C$100,1)

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

Связанный пост №1

Связанный пост №2

Любая помощь будет очень признательна.

Ответ или решение

Теория

Ваша задача заключается в создании автоматизированного списка покупок, который подтягивает данные из другой таблицы на основе выполнения определенных условий. Для этого вы используете функции в Excel, такие как VLOOKUP и Fill Down. Основная проблема, с которой вы столкнулись, заключается в том, что формула в вашей списке заменяет данные только в первой ячейке, а не заполняет остальные строки вниз, что было бы идеальным решением для вашей задачи по созданию динамического списка.

Пример

Представим вашу задачу на примере. У вас есть таблица с данными об инвентаризации, в которой для каждой позиции указываются количество и метка "Да" или "Нет" в зависимости от того, достигла ли эта позиция минимально допустимого уровня или нет.

Пример таблицы инвентаризации (листы Inventory):

A B C
Item Amount Need Restock
Apple 2 Да
Bread 10 Нет
Milk 0 Да

Пример вашего списка покупок, в который вы хотите автоматически добавлять необходимые позиции (листы List):

A
Apple
Milk

Как видим, в списке покупок должны отображаться только те позиции, у которых в колонке "Need Restock" стоит "Да".

Применение

Теперь поговорим о решении вашей проблемы. Ошибка, которая возникает у вас, вызвана тем, что функция VLOOKUP возвращает только одно значение, и вы используете один и тот же критерий (Inventory!J$2) для поиска. Чтобы получить все значения, которые необходимо добавить в список, следует пересмотреть подход к решению задачи.

Шаг 1: Использование фильтра

Один из подходов заключается в использовании функции фильтрации, если ваша версия Excel поддерживает функцию FILTER. Пример формулы:

=FILTER(Inventory!A$2:A$100, Inventory!C$2:C$100="Да")

Эта функция возвращает все строки, где в колонке "Need Restock" значение равно "Да".

Шаг 2: Использование VBA

Если FILTER недоступен или вам необходимо больше контроля, можно использовать макросы VBA для автоматизации этого процесса. Пример макроса:

Sub UpdateShoppingList()
    Dim inventorySheet As Worksheet
    Dim listSheet As Worksheet
    Dim lastRow As Long
    Dim i As Long
    Dim j As Long

    Set inventorySheet = ThisWorkbook.Sheets("Inventory")
    Set listSheet = ThisWorkbook.Sheets("List")

    ' Очистим текущий список на листе List
    listSheet.Range("A2:A100").ClearContents

    ' Найдем последнюю строку в списке Inventory
    lastRow = inventorySheet.Cells(Rows.Count, 1).End(xlUp).Row

    j = 2 ' начинаем с первой строки на листе List
    For i = 2 To lastRow
        If inventorySheet.Cells(i, 3).Value = "Да" Then
            listSheet.Cells(j, 1).Value = inventorySheet.Cells(i, 1).Value
            j = j + 1
        End If
    Next i
End Sub

Шаг 3: Автоматизация процесса

Для автоматизации запуска макроса можно использовать триггеры, например, запуск макроса при изменении данных на листе Inventory. Это позволит поддерживать список актуальным в любое время.

Заключение

Таким образом, для решения вашей задачи по созданию динамического списка покупок вам следует рассмотреть использование функций фильтрации или макросов VBA для копирования данных из одной таблицы в другую на основании заданных условий. Каждый из подходов имеет свои преимущества, и выбор зависит от ваших нужд, доступных инструментов и предпочтений.

Оцените материал
Добавить комментарий

Капча загружается...