Позвольте мне немного объяснить мою таблицу. Вот хороший скриншот этого:
Я создал эту таблицу в основном потому, что устал от проблем с юзабилити практически всех приложений для отслеживания питания. Поэтому я создаю свою собственную таблицу! Как вы можете видеть, горизонтально идут разные продукты / ингредиенты, и ниже приведены значения фактического питания.
Затем вы увидите, что внизу есть строка с названием "первая еда" с некоторыми значениями. По сути, это я говорю «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 с этим значением и количеством конкретных питательных веществ из фактов питания пищи. Проблема в том, что я не знаю, как сделать весь матричный фильтр и упростить работу. Честно говоря, я не знаю, так ли это, как работают таблицы.
* Не волнуйтесь, я разработал эту еду с полным днем еды в виду.