Динамическое обновление списка Excel без использования скриптов

Aug 15 2020

Я немного застрял и мне нужна помощь.

Я пытаюсь динамически обновлять список в Excel на основе условий в других ячейках. Что-то вроде (ЕСЛИ оба значения ячеек в A1 и A2 СОВПАДАЮТ со значениями ячеек в A3 и A4, верните A5). В идеале я бы хотел использовать только формулы, а не сценарии, но не уверен, что это возможно.

Вот такой сценарий. У Джины (A3) есть корзина для покупок с 6 предметами в ней (B3: B8): лимон, зубная паста, брауни, расческа, виноград, бутерброд -

Корзина Джины

Джина и ее друзья любят обмениваться вещами друг с другом, и когда они это делают, они записывают каждую сделку (D3: F5) -

запись торгов

Что я пытаюсь сделать, так это выяснить, как обновлять корзину покупок Джины каждый раз, когда она регистрирует новую сделку.

И, кроме того, он должен позволять торговать одним и тем же предметом дважды (для разных предметов в каждом случае), учитывая только самую последнюю торговую запись для этого предмета - в этом случае она получает апельсин в своей корзине -

в этом случае она получает в корзину не апельсин, а не кекс

Я пробовал различные комбинации IF, AND, MATCH и INDEX с повторяющимся вторым столбцом или застревал в циклических зависимостях, и я не могу добраться до сути.

Вот ссылка на рабочий лист: https://docs.google.com/spreadsheets/d/17J-lX2V1Zs-K7WmsfruqcEJtmElM5rCQTeCLFh8FX1U/edit?usp=sharing

Если у кого-то есть идеи, как это решить, я был бы безмерно благодарен!

Спасибо Джимми

Ответы

1 RajeshS Aug 16 2020 at 15:12

:: Предостережение ::

Поскольку OP не нуждается в решении на основе VBA MACRO, поэтому в этих обстоятельствах я обнаружил, что используется несколько формул ARRAY (CSE) и условное форматирование. Возможно, что другой может предложить лучший.


Как это устроено:

  • Проданные товары и список бакалейщиков приведены в ТАБЛИЦЕ.

Как только вы добавите или удалите имя или элемент из ТАБЛИЦЫ, Excel автоматически обновит связанные данные.

  • Кроме Shoping Корзины & торгуемых предметов , вам нужно создать список бакалейщика тоже.

  • Как только кто-то покупает какой-либо предмет, вам необходимо ОБНОВИТЬ стол Бакалейщика .

Проверьте список старых предметов, купленных GINA и другими.

  • Создайте один раскрывающийся список в ячейке P17, в настоящее время имеет только 3 имени, вы можете добавить больше.

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

  • Формула массива (CSE) в ячейке P28:

     {=IFERROR(INDEX($U$17:$U$30, MATCH(0, INDEX(COUNTIF($P$27:P27, $U$17:$U$30)+($U$17:$U$30=""), ), 0)), "")}
    
  • Для более высоких версий вы можете использовать это в P28:

    =UNIQUE(FILTER(U17:U30,U175:U30<>""))

Затем используйте список уникальных покупателей для раскрывающегося списка в ячейке P17.

  • Теперь используйте эту формулу массива (CSE) в ячейке Q17:

    {=IFERROR(INDEX($T$17:$T$30, SMALL(IF(COUNTIF($P$17, $U$17:$U$30)*COUNTIF($U$17:$U$30,"<>"), ROW($T$17:$U$30)-MIN(ROW($T$17:$U$30))+1), ROW(A1)), COLUMN(A1)),"")}
    
  • Формула массива (CSE) в ячейке R17:

    {=IFERROR(INDEX($N$17:$N$22, SMALL(IF(COUNTIF($P$17, $L$17:$L$22)*COUNTIF($N$17:$N$22,"<>"), ROW($L$17:$N$22)-MIN(ROW($L$17:$N$22))+1), ROW(A1)), COLUMN(A1)),"")}
    
  • Примените условное форматирование, используя приведенную ниже формулу в качестве нового правила, в вопросе 17: вопрос 25:

    =COUNTIF($N$17:$N$22,Q17)=0


NB

  • Завершите формулу массива (CSE) с помощью Ctrl + Shift + Enter и заполните в нужном направлении.

  • Список новых предметов показывает обмененные (проданные) предметы.

  • В старом списке предметы отмечены КРАСНЫМ цветом, это неотменяемые предметы, так как вы можете найти, что GINA купила ПЯТЬ предметов (проверьте список клиентов в столбце U) и обменяла только ДВА, это авокадо и сигары.

  • Продолжайте менять имена в ячейке P17, вы получите результаты.

  • При необходимости измените ссылки на ячейки в формуле.