
Я пытаюсь найти способ сравнения двух списков «людей», в которых по несколько строк на человека, с другим списком, в котором могут быть или не быть те же строки.
У каждого человека есть уникальный идентификатор. Для каждого человека в любом списке может быть от 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))