每個月 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
如果您將每月的工作表合併到當年的單一資料庫工作表中,則此摘要將更容易完成。然後,您可以設定資料透視表,該資料透視表將在短時間內按人員進行匯總。
我懷疑你的 vlookups 總和會引發錯誤,因為每個人一年中只有幾個月休假。處理這個問題的方法是將查找包裝在 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.
)
透過在各個欄位中設定每個月的查找,然後對各列的結果求和,可以使這稍微不那麼尷尬。
我不太熟悉的另一個替代方案(但可能滿足您的需求)是「資料合併」命令。可以找到該指令的解釋這裡。
我強烈推薦資料透視表方法。