我最近开始了解 Excel 的 Ctrl+Shift+Enter 数组公式,目前仍在学习它们。来到我的问题,
SheetA:
Product Code
S1 19875
S2 19834
S1 13575
S1 35675
S2 47875
SheetB:
Code Indent
19875 40
19834 15
13575 22
35675 25
47875 20
我需要对给定产品名称的所有缩进进行求和。
例如:我需要 S1 的总缩进,
我可以通过 VBA 实现这一点,但我想知道这是否可以在使用 CSE/数组公式的 excel 函数中实现。
编辑:
我在 Sheet2 中没有与 Sheet1 相同顺序的值。它们是完全随机的。我的 SheetB 将是随机的,如下所示:
SheetB:
Code Indent
19834 40
19875 15
47875 22
13575 25
35675 20
最佳答案
{=SUM(NOT(ISNA(MATCH((($A$2:$A$6="S1")*(B2:B6)),Sheet2!$A$2:$A$6,FALSE)))*(Sheet2!$B$2:$B$6))}
MATCH 的第一个参数解析为
{19875;0;13575;35675;0}
比赛决定为
{1;#N/A;3;4;#N/A}
您必须确保 SheetB 中没有零。 NOT ISNA 将这些转换为 TRUE 和 FALSE 并解析为
{TRUE;FALSE;TRUE;TRUE;FALSE}
最后的 SUM 看起来像这样
=SUM({TRUE;FALSE;TRUE;TRUE;FALSE}*{40;15;22;25;20})
更新
当列表的顺序不同时,我无法找出单阵列解决方案。我对 OFFSET 和 TRANSPOSE 的尝试要么给出了错误的答案,要么使 Excel 崩溃。如果您可以站立使用辅助列,则可以将此公式放在第一张工作表的第三列中
=VLOOKUP(B2,Sheet2!$A$2:$B$6,2,FALSE)
然后使用这个数组公式来总结它们
{=SUM(($A$2:$A$6=A2)*($C$2:$C$6))}
关于Excel - 递归 VLookup,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5496952/