Позвольте мне немного объяснить мою таблицу. Вот хороший скриншот этого:

Я создал эту таблицу в основном потому, что устал от проблем с юзабилити практически всех приложений для отслеживания питания. Поэтому я создаю свою собственную таблицу! Как вы можете видеть, в горизонтальной плоскости находятся различные продукты / ингредиенты, а ниже приведены значения фактических данных о питании.
Тогда вы увидите, что внизу есть строка с названием «первая еда» с некоторыми значениями. По сути, это я говорю «2,5 порции квиноа, 2 порции чечевицы» и т. Д. Эта информация затем показана в таблице ниже, где «Первая еда» слева. *
Моя цель сейчас - учесть две вещи.
- Многоразовое питание
- блюда из других блюд
- (Представьте, что есть ряды "Завтрак с углеводами", "Обед с жиром", "Белковый ужин", и каждый из них представлял собой столы с едой, но я хотел объединить их в одном столике под названием "Завтрак с углеводами, жирный обед, ужин с белком")
У меня возникли трудности с этим, и, по сути, все сводится к формуле для строки D на таблице "первого приема пищи". Формула для него в настоящее время SUMPRODUCT(Row Fat, Row First Meal)
и, как вы можете себе представить, SUMPRODUCT(Row Cholestrol, Row First Meal)
. Это хорошо работает для одного приема пищи, но это просто много работы для настройки на несколько приемов пищи и не работает для многократного приема пищи.
Цель состоит в том, чтобы значение каждой ячейки в столбце D по существу определялось следующей формулой.
nutrient = // whatever row we are on
integer sum = 0;
foreach(row in top table):
integer weight = [ammount of the 'nutrient' in this row]
integer innersum = 0;
foreach(meal in meals):
if (meal is contained in string top left corner of this table):
innersum += [number of servings of this row];
sum += innersum * weight;
Это действительно самый ясный способ объяснить эту формулу. По существу, для каждого элемента питания посмотрите на верхнюю левую ячейку вашего стола и получите сумму порций для этого элемента питания на основе этой строки, а затем умножьте ее на количество правильного питательного вещества в еде.
В идеале эта формула для значения в ячейке D должна быть реализована следующим образом:
Возьмите матрицу всех блюд из верхней таблицы и отфильтруйте строки с именами, которые не содержатся в вашем верхнем левом столбце. Затем упростите эту матрицу в одну строку, сложив все элементы в столбце. Затем сделайте sumproduct с этим значением и количеством конкретных питательных веществ из фактов питания пищи. Проблема в том, что я не знаю, как сделать весь матричный фильтр и упростить работу. Честно говоря, я не знаю, работают ли электронные таблицы именно так.
* Не волнуйтесь, я разработал эту еду с учетом полного дня еды.