SumIF, используя таблицу / именованный диапазон вместо критериев отдельной ячейки - PullRequest
0 голосов
/ 01 марта 2019

У меня есть 2 листа в рабочей книге (Лист1, Лист2).

Лист 2 содержит таблицу (Именованная таблица1) с 5 столбцами:

  • Еда на вынос
  • Домашнее хозяйство
  • Одежда
  • Топливо
  • Продовольственные товары

На первом листе у меня есть 2 столбца:

  • Название расходов
  • Всего расходов

Теперь я пытаюсь сделать следующее:

  1. Установить диапазон для имени расходов (диапазон 1)
  2. Установите диапазон для общей суммы расходов (диапазон 2)
  3. Сравните диапазон 1 с соответствующим столбцом в таблице и сложите только значения для совпадений

ДляНапример, в диапазоне 1 (B6: B16):

  • BP
  • Caltex
  • McDonalds
  • KFC

В диапазоне 2 (C6: C16):

  • 300
  • 400
  • 200
  • 150

Теперь все, что я хочу сделать, это сложить значения для блюд на вынос (McDonalds, KFC) и исключить все, что НЕtch the критерий.

Таким образом, моя общая сумма будет равна всем случаям на вынос - при условии, что они перечислены в моей таблице - в данном случае 350.

Но я не могу заставить формулу работать.

Я использовал следующие источники:

https://exceljet.net/excel-functions/excel-sumifs-function

Выбор определенного столбца именованного диапазона для функции SUMIF

и в конечном итоге с этой формулой:

=SUMIF($B$6:$B$16;Table1[Takeaways];C6:C16)

Этот источник:

https://excelchamps.com/blog/sumif-sumifs-or-logic/

и в конечном итоге с этой формулой:

=SUM(SUMIFS(C6:C16;B6:B16;Table1[Takeaways]))

Обе формулы возвращают 0.

НО, с ОБА из них, если я изменю Таблицу [Еда на вынос] на "Макдональдс", то она правильно идентифицирует каждое вхождение слова "Макдональдс" в диапазоне 1.

РЕДАКТИРОВАТЬ:

Я обновил формулы выше, чтобы соответствовать изображениям ниже.

Это таблица, которая содержит ссылки:

enter image description here

Эта таблица содержит данные:

enter image description here

Formula:

Ячейка C4 (рядом с выносом): =SUMIF($B$6:B$16;Table1[Takeaways];C6:C16)

Ячейка C5 (рядом с топливом): =SUM(SUMIFS(C6:C16;B6:B16;Table1[Fuel]))

Появляетсячто в формуле обнаруживается ТОЛЬКО BP.

Это выходная таблица, когда я использую формулы с одной ссылкой на ячейку, а не с таблицей или используемым диапазоном:

enter image description here

Формула:

Ячейка F4 (рядом с BP): =SUMIF($B$6:B$16;"BP";C6:C16)

Ячейка F5(Рядом с Caltex): =SUM(SUMIFS(C6:C16;B6:B16;"Caltex"))

Ячейка F6 (Рядом с McDonalds): =SUMIF($B$6:B$16;"McDonalds";C6:C16)

Ячейка F7 (Рядом с KFC): =SUM(SUMIFS(C6:C16;B6:B16;"KFC"))

Ответы [ 3 ]

0 голосов
/ 01 марта 2019

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

Продолжая работу над моим частичным решением, приведенным ниже, я получил следующую формулу:

=SUMPRODUCT(COUNTIF(Table1[Takeaways];Range1)*Range2)

Часть COUNTIF() подсчитывает числовхождения значения ячейки в вашей таблице.Поэтому убедитесь, что в вашей таблице нет дубликатов.Если значение присутствует в таблице, результат COUNTIF() будет равен 0. Таким образом, мы создаем матрицу из 1 и 0.Умножая и используя SUMPRODUCT(), мы заставляем excel выполнять матричные вычисления и возвращать правильный результат.


Частичное решение

Я использовал следующую формулу:

=SUMPRODUCT(ISNUMBER(MATCH(Range1;Table1[Takeaways]))*Range2)

Формула выполняет следующие действия:

  • MATCH() проверяет, присутствует ли значение в Range1 в вашей таблице, и возвращает позициюзначения совпадения в вашей таблице.
  • ISNUMBER() проверяет, найдено ли совпадение, проверяя, вернула ли функция MATCH() число
  • Умножение этого значения на Range2 приводит к принудительному вычислению матрицыс использованием функции SUMPRODUCT()

EDIT:

Это сработало для действительно ограниченного семпла.Как только я добавил четвертую строку в мои данные, формула перестала работать как задумано.См. Скриншот: enter image description here

Первые два значения были приняты в сумму правильно, четвертое не учтено.

0 голосов
/ 01 марта 2019

Если я правильно понимаю, что вы пытаетесь достичь, я думаю, что ваша концепция неверна концептуально.

Похоже, вы пытаетесь отслеживать расходы, и каждый расход (или получатель) распределяетсяв категорию («Еда на вынос», «Бытовая» и т. д.).С точки зрения реляционной модели ваша вторая таблица (которая определяет категорию для каждого расхода / получателя) должна иметь только два столбца (или переменные): Имя расхода и Категория расходов .

enter image description here

В таблице, которую вы создали («Лист 2»), используются категории (то есть возможные значения) как разныестолбцы (то есть переменные).Но есть только переменная, а именно «Категория расходов», и сами категории являются возможными значениями.

Если вы установите ее таким образом, проблема изменится: вы можете добавить зависимый столбец в свою первую таблицу, котораяпоказывает категорию для каждого получателя (или «Название расходов»), используя VLOOKUP() из второй таблицы.

enter image description here

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

enter image description here

Примечание : я создал иллюстрацию с использованием LibreOffice Calc , поэтому могут быть небольшие отличия, но логика та же.

0 голосов
/ 01 марта 2019

Не видя данных в L и KI, я не могу дать вам полный ответ - но, скорее всего, это связано с тем, как вы тянете свой массив

Попробуйте что-то похожее на это

=SUMPRODUCT(SUMIFS($L$11:$L$43,$K$11:$K$43,CHOOSE({1,2},Takeaways,"anything else you wanted to sum")))

Помните, что SUMIFS предназначен для нескольких критериев, поэтому, если вы рассчитываете только один, вам понадобится =SUMPRODUCT(SUMIF(

Способ, описанный выше, работает только с вертикальными векторами,но изменив именованные диапазоны, чтобы таблица из 2 столбцов составляла 2 именованных диапазона, вместо этого все должно быть в порядке - если только это не входит в ваши требования* и т. д.

...