Как сравнить 2 списка с несколькими строками на элемент?

Как сравнить 2 списка с несколькими строками на элемент?

Я пытаюсь найти способ сравнения двух списков «людей», в которых по несколько строк на человека, с другим списком, в котором могут быть или не быть те же строки.

У каждого человека есть уникальный идентификатор. Для каждого человека в любом списке может быть от 1 до 4 строк. Они не обязательно могут содержать одинаковое количество строк или они могут быть в разном порядке. Кроме этого, для каждого человека почти каждая ячейка в каждой строке будет избыточной и одинаковой (в основном личная информация, которая не меняется). Возможные строки («предметы») всегда одни и те же: куртки, шляпы, обувь и аксессуары. Последние две ячейки в каждой строке — это фактическое значение, которое мне нужно сравнить.

Английский — мой второй язык, и мне очень трудно выразить его словами.поэтому я сделал пример в Google Таблицах.

Я также получаю обе эти таблицы с определенными столбцами и форматом, как в примере, который я связываю, и я не могу изменить это или переставить. Все, что я могу сделать, это добавить столбец "Went over?".

Мне кажется, что мне нужно что-то вроде более сложной версии VLOOKUP, где я могу искать уникальный идентификатор (столбец B), затем каким-то образом искать элемент (столбец E) и возвращать значение суммы для этого конкретного элемента (столбец F). Тогда это просто вопрос IF A=B, то "OK!" и т. д. Но я не знаю функции, которая работала бы как двойной VLOOKUP, так сказать.

Можете ли вы, добрые люди из SU, указать мне правильное направление, как придумать способ создания столбца "сравнение" в N таким образом, чтобы не требовалось скриптинга? Иначе как я могу сравнить каждый элемент для каждого человека с теми же элементами для того же человека в другом списке?

Пример таблицы 1

ИМЯ ИДЕНТИФИКАЦИОННЫЙ НОМЕР ПОСТАВЩИКА СЕКС ВОЗРАСТ ОЖИДАЕМЫЕ ТОВАРЫ ОЖИДАЕМАЯ СУММА
УОТТС, ТОМ 6505581 М 21 Куртки 44
УОТТС, ТОМ 6505581 М 21 Головные уборы 20
УОТТС, ТОМ 6505581 М 21 Обувь 55
УОТТС, ТОМ 6505581 М 21 Аксессуары 18
СМИТ, ДЖЕЙН 702452 Ф 32 Головные уборы 56
СМИТ, ДЖЕЙН 702452 Ф 32 Обувь 20
СМИТ, ДЖЕЙН 702452 Ф 32 Аксессуары 26
ДОУ, ДЖОН 1235554 М 54 Куртки 80
ДОУ, ДЖОН 1235554 М 54 Аксессуары 20

Пример таблицы 2

ИМЯ ИДЕНТИФИКАЦИОННЫЙ НОМЕР ПОСТАВЩИКА СЕКС ВОЗРАСТ ПРОДАННЫЕ ТОВАРЫ ПРОДАННАЯ СУММА ПОДОШЕЛ?
УОТТС, ТОМ 6505581 М 21 Куртки 44 ХОРОШО!
УОТТС, ТОМ 6505581 М 21 Обувь 65 +10
УОТТС, ТОМ 6505581 М 21 Головные уборы 20 ХОРОШО!
УОТТС, ТОМ 6505581 М 21 Аксессуары 18 ХОРОШО!
СМИТ, ДЖЕЙН 702452 Ф 32 Аксессуары 26 ХОРОШО!
СМИТ, ДЖЕЙН 702452 Ф 32 Обувь 10 -10
СМИТ, ДЖЕЙН 702452 Ф 32 Головные уборы 56 ХОРОШО!
ДОУ, ДЖОН 1235554 М 54 Куртки 95 +15
ДОУ, ДЖОН 1235554 М 54 Аксессуары 22 2

решение1

Решение без таблиц иLET

Теперь я использовал вспомогательный столбец, чтобы сначала получить ожидаемую сумму (чтобы упростить окончательную формулу):
=FILTER($F$2:$F$10,($B$2:$B$10=I2)*($E$2:$E$10=L2))

Основная формула просто сравнивает проданное количество с ожидаемым количеством:
=IF(M2=N2,"OK!",M2-N2)

введите описание изображения здесь

решение2

Функция, которая вам нужна, это FILTER(), кроме того, я использовал LET()функцию, чтобы упростить формулу, и добавил таблицы (insert - table), чтобы я мог использовать структурированные ссылки.

=LET(expected, FILTER(Table1[AMOUNT EXPECTED],(Table1[VENDOR ID '#]=[@[VENDOR ID '#]])*(Table1[ITEMS EXPECTED]=[@[ITEMS SOLD]])),IF(expected=[@[AMOUNT SOLD]],"OK!",[@[AMOUNT SOLD]]-expected))

введите описание изображения здесь

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