根据一组ID从另一张表中总结数值

我想创build一个帮助人们logging饮食习惯的工作手册。 该工作手册目前有两个表,“食谱”和“日记”。

食谱有列ID,名称,KCAL和蛋白质。 用户可以添加他们经常使用的任何配方,只需使用数字ID来引用它们。

日记有DATE,TOTAL_KCAL和TOTAL_PROTEIN列。 这个想法是每个date用户可以看到吃的能量和蛋白质的总量。

我已经想出了如何使用VLOOKUP()将配方表单中的单个配方的kcal和蛋白质数量转换成日记表单:

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

但我真的想自动化这一点。 在这个阶段,如果我想使用这个表,我需要复制整个函数(并添加一个+前缀),粘贴到最后,并将第一个参数更改为正确的ID。 然后我不得不重复这个过程到TOTAL_PROTEINS列(我需要记住将源参数从3更改为4)。

我想最佳情况是,如果日记表也有一些EATEN_RECIPES列,人们可以添加一个ID列表(1,15,6),但我不知道这是否可能在Excel中。 重点是,我想能够记下一个ID日记,并有Excel自动从食谱表中获取大卡和蛋白质的数量,并更新日记中的总金额。

这可能是一件相当简单的事情,但我不知道在谷歌使用什么search词,任何意见,在此表示赞赏。 (另外我需要一个更好的标题。)

如果我了解您正在尝试正确执行的操作,则可以通过在希望获取的数据前加上!来引用其他工作表中的数据来解决您的复制和粘贴问题。 例如,如果您的数据在Sheet1中,在A1:A7的范围内,则可以在公式和函数中使用以下内容引用它:

 Sheet1!A1:A7 

至于ID的列表…你可以尝试这个作为一个起点:

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

它进入自定义编码…你也可以让用户input每个ID到不同的列,但这是一个丑陋的黑客。

顺便说一句,这听起来像你在做什么越来越接近数据库的领土…很多时候,Excel表最终成为自己的迷你数据库。 如果您对数据库感到满意,并且不介意这些工作,那么您可以考虑使用数据库。

这是我结束的function。 基于user1161318提供的url。 我知道这不是很漂亮,但我只是想让它工作,我是新来的Visual Basic。

 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