多张工作表上的 vlookup 值总和

多张工作表上的 vlookup 值总和

工作簿中每个月(1 月至 12 月)有 12 个 Excel 工作表。每个工作表包含同一行中标记的该月姓名和休假,以及表格末尾每个休假类别的总和值。我需要通过在所有工作表中查找每个人的姓名来汇总这些单独的工作表值。我如何在 Excel 中实现这一点......我尝试从所有工作表中对 vlookup 求和,但它会抛出错误或没有结果。

答案1

这里使用 SUMIF 可能更简单,因为如果在任何特定工作表上找不到该人员,SUMIF 不会给出错误(尽管所有工作表都需要存在),所以如果你有从“jan”到“dec”的工作表,请尝试使用此公式来计算 12 个月的总数

=SUM(SUMIF(INDIRECT({"jan";"feb";"mar";"apr";"may";"jun";"jul";"aug";"sep";"oct";"nov";"dec"}&"!B8:B110"),B8,INDIRECT({"jan";"feb";"mar";"apr";"may";"jun";"jul";"aug";"sep";"oct";"nov";"dec"}&"!AL8:AL110")))

您可以使用命名范围来缩短它,例如

Sheetlist ={"jan";"feb";"mar";"apr";"may";"jun";"jul";"aug";"sep";"oct";"nov";"dec"}

然后公式变成

=SUMPRODUCT(SUMIF(INDIRECT(Sheetlist&"!B8:B110"),B8,INDIRECT(Sheetlist&"!AL8:AL110")))

答案2

如果您将月度工作表合并为年度的单个数据库工作表,则此摘要将更容易完成。然后,您可以设置一个数据透视表,该表将快速按人进行汇总。

我怀疑您的 vlookup 总和会引发错误,因为每个人一年中只在几个月休假。解决这个问题的方法是将查找包装在 IFERROR 函数中。因此公式必须如下所示:

 =sum(iferror(vlookup(<person name>,<January sheet name!data range>,<leave column number>,0),0),
      iferror(vlookup(<person name>,<February sheet name!data range>,<leave column number>,0),0),
      etc.
      )

通过在单独的列中为每个月设置查找,然后对各列的结果求和,可以使这种情况稍微不那么尴尬。

另一个我不太熟悉但可能满足您需求的替代方案是数据合并命令。可以找到该命令的说明这里

我强烈推荐数据透视表方法。

相关内容