0

人々が自分の食生活を記録するのに役立つワークブックを作成したいと考えています。ワークブックには現在、「レシピ」と「日記」の 2 つのシートがあります。

Recipes には、列 ID、NAME、KCAL、および PROTEIN があります。ユーザーは、頻繁に使用するレシピを追加し、数値 ID を使用してそれらを参照するだけです。

Diary には列 DATE、TOTAL_KCAL、および TOTAL_PROTEIN があります。アイデアは、ユーザーが食べたエネルギーとタンパク質の総量を見ることができる日付ごとです.

VLOOKUP() を使用して、レシピ シートからダイアリー シートに 1 つのレシピの kcal とタンパク質の量を取得する方法を既に理解しました。

=VLOOKUP(1;Table1;3;FALSE) //For kcal

しかし、私はこれを少し自動化したいと思っています。この段階で、このシートを使用する場合は、関数全体をコピーして (+ プレフィックスを追加し)、最後に貼り付けて、最初のパラメーターを正しい ID に変更する必要があります。次に、このプロセスを TOTAL_PROTEINS 列に対しても繰り返す必要があります (ここで、ソース パラメーターを 3 から 4 に変更することを忘れないでください)。

Diary シートに EATEN_RECIPES 列があり、ID のリスト (1,15,6) を追加できるのが最適な状況だと思いますが、これが Excel で可能かどうかはわかりません。要は、ダイアリーにIDを書き込めるようにして、エクセルがレシピシートからkcalとタンパク質量を自動で取得し、ダイアリーの合計量を更新できるようにしたいのです。

これはおそらく非常に単純な問題ですが、Google で使用する検索語がわかりません。これに関するコメントをお待ちしています。(また、より良いタイトルが必要です。)

4

2 に答える 2

2

あなたが何をしようとしているのかを正しく理解している場合は、取得したいデータの前に ! を付けて、別のシートのデータを参照することで、コピー & ペーストの問題に対処できます。たとえば、データが Sheet1 の A1:A7 の範囲にある場合、数式と関数で次のように参照できます。

Sheet1!A1:A7

IDのリストについては...これを出発点として試すことができます:

http://www.ozgrid.com/forum/showthread.php?t=86497

カスタムコーディングに入ります...ユーザーに各IDを別の列に入力させることもできますが、それは醜いハックです.

ところで、あなたがやっていることはデータベースの領域に近づいているように思えます... 非常に多くの場合、Excel シートは最終的に独自のミニ データベースになります。データベースに慣れていて、仕事を気にしない場合は、代わりにデータベースの使用を検討できます。

于 2012-12-04T13:26:41.490 に答える
0

これが私が最終的に作った関数です。user1161318によって提供されたURLに基​​づきます。それほどきれいではないことはわかっていますが、それを機能させたいと思っていたので、VisualBasicは初めてです。

Function MultiVLookup2(LookUpVal, LookUpRng As Range, LookUpCol As Long)

Dim v, w, i, rng As Range, sum As Single

v = Split(LookUpVal, ",")
sum = 0

ReDim w(UBound(v, 1))

For i = LBound(v, 1) To UBound(v, 1)
    w(i) = WorksheetFunction.VLookup(Val(v(i)), LookUpRng, LookUpCol, False)
Next i

For i = LBound(v, 1) To UBound(v, 1)
    sum = sum + w(i)
Next i

MultiVLookup2 = Round(sum, 1)

End Function
于 2012-12-04T20:51:40.590 に答える