SUM значений столбца стоимости всех записей, соответствующих списку товаров

Вот моя настройка листа:

  • У меня есть лист "Инвентарь", на котором хранятся строки со всеми имеющимися у меня товарами. У каждого товара есть значение / столбец «Стоимость» и столбец «Цена продажи».
  • У меня есть еще один лист «Фотография», в котором будет для каждой строки / записи ячейка, в которой указывается список элементов, используемых в фото, на которое ссылается некий инвентарь item ref. И из этого я хочу vlookup или что-то в этом роде, чтобы получить «Стоимость» всех этих элементов в списке и просуммировать их.
  • Таким образом, для конкретной фотографии я могу узнать, какие элементы используются на фотографии и сколько стоят все эти элементы (в сумме).
  • Затем я сделаю то же самое для «Продажной цены», таким образом, для каждой фотографии, которую я сделаю, я смогу указать стоимость этого элемента продукта «как есть» (со всеми различными элементами инвентаря), а также цену продажи. цена.

Пример:

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

Я смог сделать это только для 1 элемента, но я хочу, чтобы формула работала со «списком» элементов в B9.

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

=SUM(QUERY(A:B,"select B where A matches 'ID-100'"))

person KBog    schedule 07.01.2017    source источник


Ответы (1)


Если в вашем столбце «Используемые элементы» последовательно используется формат, разделенный запятыми, для списков элементов, следующее будет работать.

=query(Cost!A:B, "select sum(B) where A = '" & join("' or A = '", split(B9, ", ")) & "' label sum(B) ''")

Здесь split разбивает список используемых элементов на отдельные идентификаторы элементов. Затем они соединяются, помещая между ними ' or A = ', например:

ID-101' or A = 'ID-101

Есть биты, добавленные впереди и добавленные для формирования строки запроса, например,

select sum(B) where A = 'ID-101' or A = 'ID-101' label sum(B) ''

который делает свою работу. Часть метки необходима для получения вывода с одной ячейкой, чтобы заголовок «Сумма (Стоимость)» не мешал.


Подробная информация о разбиении: как написано выше, split(B9, ", ") разбивается на либо запятую, либо пробел (игнорируя пустую строку в выводе). Так что будет работать даже с ID-1,ID-2, ID-3 ID-4. С другой стороны, это может быть проблемой, если ваши идентификаторы содержат пробелы. Более строгий режим разделения - split(B9, ", ", False), который требует, чтобы вся строка "," использовалась в качестве разделителя.

person Community    schedule 07.01.2017
comment
Спасибо, это именно то, что я хотел! - person KBog; 08.01.2017