スプレッドシートについて少し説明しましょう。以下にスクリーンショットを示します。
ほぼすべての栄養追跡アプリの使いやすさの問題にうんざりしているため、このスプレッドシートを作成しました。だから私は自分のスプレッドシートを作成しています!水平に進むとわかるように、さまざまな食品/成分があり、それらの栄養成分の値は次のとおりです。
次に、下の方にいくつかの値を持つ「最初の食事」というタイトルの行があることがわかります。これは基本的に「キヌア2.5サービング、レンズ豆2サービング」などと言っています。この情報は、左の「最初の食事」の下の表に示されています。*
今の私の目標は、2つのことを可能にすることです。
- 複数の食事
- 他の食事で作られた食事
- (「Carb Breakfast」「Fat Lunch」Protein Dinner」という行があり、それぞれが食事のテーブルだったと想像してください。それらを組み合わせた「Carb Breakfast、Fat Lunch、Protein Dinner」というタイトルのテーブルが必要でした)
私はそうするのが少し難しいのですが、基本的には「最初の食事」テーブルの行Dの式に帰着します。それの公式は現在SUMPRODUCT(Row Fat, Row First Meal)
、あなたが想像できるようにSUMPRODUCT(Row Cholestrol, Row First Meal)
です。これは1回の食事で問題なく機能しますが、複数の食事を微調整するだけの作業であり、複数の食事では機能しません。
目標は、列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を実行します。問題は、マトリックスフィルター全体を実行して操作を簡素化する方法がわからないことです。率直に言って、それがスプレッドシートの仕組みであるかどうかはわかりません。
*この食事を丸一日の食事を念頭に置いてデザインしたことをfreしないでください。