我有一张包含以下内容的表格:
Name Quota-Date Quota
Ami 5/1/2010 75000
Ami 1/1/2012 100000
Ami 6/1/2014 150000
John 8/1/2014 0
John 4/1/2015 50000
Rick 5/1/2011 100000
(日期以美国格式显示:m / d / yyyy)。 “配额日期”是其旁边活跃的新“配额”的第一个月。 例如。 2010年5月至2011年12月期间,Ami的每月的配额为75000 。
我需要一个公式来获取给定人员和给定月份的配额:每个月的活跃配额。这个需要的公式是计算该表的第三列:
Name Month Quota
Ami 6/1/2010 75000
Ami 12/1/2011 75000
Ami 1/1/2012 100000
Ami 7/1/2014 150000
John 10/1/2014 0
John 4/1/2015 50000
我不想保持第一个表的排序,但如果它会使事情变得更加简单,我会的。
第二张桌子上“配额”的正确公式是什么?
答案 0 :(得分:1)
如果您的新数据位于A-C列中且原始数据也是Sheet1中的A-C列,则在B2中输入此公式:
=SUMIFS(Sheet1!C:C,Sheet1!A:A,A2,Sheet1!B:B,MAX(IF((Sheet1!A:A=A2)*(Sheet1!B:B<=B2),Sheet1!B:B,"")))
如果你的第3栏中只有数字,那么这个公式很有效,但是也可以使它更复杂地处理文本。
答案 1 :(得分:0)
谢谢,MátéJuhász! 我刚刚为此制定了另一种解决方案,而不是作为阵列公式,但我更喜欢你的解决方案 - 更优雅,我会用它!
我的记录解决方案:
= INDEX(INDIRECT(“Quota!$ E $”&amp; MATCH([@ PM],PMQuotaTable [PM],0)+ ROW(PMQuotaTable [#Headers])&amp;“:$ E $”&amp; MATCH([@ PM],PMQuotaTable [PM],0)+ ROW(PMQuotaTable [#Headers])+ COUNTIF(PMQuotaTable [PM],[@ PM]) - 1),MATCH([@月],INDIRECT(”配额!$ D $“&amp; MATCH([@ PM],PMQuotaTable [PM],0)+ ROW(PMQuotaTable [#Headers])&amp;”:$ D $“&amp; MATCH([@ PM],PMQuotaTable [ PM],0)+ ROW(PMQuotaTable [#Headers])+ COUNTIF(PMQuotaTable [PM],[@ PM]) - 1),1))
我正在运行匹配类型= 1的常规索引/匹配以查找最大的日期行,但我动态构造目标范围以仅限定当前人(PM)的行。 我用这个部分确定了这个PM的第一行: MATCH([@ PM],PMQuotaTable [PM],0)+ ROW(PMQuotaTable [#Headers])
...并且通过添加他在表中的行数来确定PM的最后一行,因此使用以下方法检索: MATCH([@ PM],PMQuotaTable [PM],0)+ ROW(PMQuotaTable [#Headers])+ COUNTIF(PMQuotaTable [PM],[@ PM]) - 1
然后使用INDIRECT构建动态范围。因此,使用此部分确定完整范围(最终要检索的所需列): INDIRECT(“Quota!$ E $”&amp; MATCH([@ PM],PMQuotaTable [PM],0)+ ROW(PMQuotaTable [#Headers])&amp;“:$ E $”&amp; MATCH([@ PM] ,PMQuotaTable [PM],0)+ ROW(PMQuotaTable [#Headers])+ COUNTIF(PMQuotaTable [PM],[@ PM]) - 1)
Mor