[英]Excel - how to count specific values from one table based on values in another table
[英]Excel cell formula to count keys from one table, if their values in another table are a specific criteria
我觉得这个问题的答案很简单,但我似乎无法理解它:我有一个大型的历史数据表(右边的例子),当时特定的部件号被运出,以及是否它们是两个类别之一(例如左侧)。
Part Type | Part Shipped Date Shipped
Part#1 W | Part#3 23-Apr
Part#2 W | Part#3 25-Apr
Part#3 W | Part#5 17-Apr
Part#4 U | Part#2 18-Apr
Part#5 W | Part#6 25-Apr
Part#6 U | Part#1 18-Apr
我正在尝试获取COUNTIFS公式来计算[上周一]和[上周五]之间的所有[零件发货]条目,但仅限于[类型]类型为“W”的情况。 我已经得到了日期标准,但我不能完全弄清楚如何将[Part Shipped]标准范围传递到另一个表格以便引用和计算[Type]
输入数据来自实时数据源(Odata,atomsvc文件),因此我使用完整列作为条件范围,例如'DATA'!X:X。
我已经找到了日期标准:
">=" & ((TODAY() - 7) - (WEEKDAY(TODAY()) - 2))
"<=" & ((TODAY() - 7) + (WEEKDAY(TODAY()) - 6))
到目前为止我的完整公式是这样的:
=COUNTIFS('SO Progress'!X:X, ">=" & ((TODAY() -7) - (WEEKDAY(TODAY()) -2)), 'SO Progress'!X:X, "<=" & ((TODAY()-7) + (WEEKDAY(TODAY())-6)))
但是这还没有任何计算类型的标准。 我想过使用一个简单的VLOOKUP并将其与“W”进行比较,但我的主要问题是如何将整个范围传递到VLOOKUP公式中,并为该范围内的每一行获得结果。
在这一点上,我觉得这可能只是我不知道如何使用这些功能或工具中的一个或多个来获得我需要的东西,因为我觉得这可能是一个常见的问题。 我似乎无法找到任何具体到足以帮助我的案例的结果。
[编辑]
使用上面的数据,假设列是连续的A:D,我希望首先过滤掉周一到周五上周的发货日期(D:D)。 例如,使用今天(4/29),该范围将是4/22到4/26。
这一对初始标准将给我三个结果:第3部分,第3部分和第6部分。 但是,第6部分的类型为“U”,由A列和B列说明,因此我的最终结果记录最终应为2。
A:B表包含唯一的部件号及其类型以供参考,但表C中的出厂部件:D可能是重复的,并且在大多数情况下,将比类型参考表大得多。
如果你想要计算日期大于x的事件, 并且日期小于Y, 并且 z =“W”,那么只需在COUNTIFS()
函数中添加另一个标准。
下面的公式假设日期在D列中,类型在B列中 - 显然可以调整这些以适合您的工作表。
=COUNTIFS(D:D, ">=" &TODAY()-7-WEEKDAY(TODAY()-2),D:D, "<=" & TODAY()-7+WEEKDAY(TODAY()-6),B:B,"=W")
这需要一段时间来弄清楚,但你可以使用以下数组公式(使用Ctrl + Shift + Enter ,如果你做得对,你应该在公式栏中看到大括号):
=SUMPRODUCT(--(D2:D7=TRANSPOSE(A2:A7))*TRANSPOSE(B2:B7=H2)*(E2:E7>=(Today-WEEKDAY(Today,2)-6))*(E2:E7<=(Today-WEEKDAY(Today,2)-2)))
我认为它应该可以工作,我尝试用不同的值来玩一点,它似乎很好。 在上面的快照中, Today
是H1。
当然,计算你的数据集是否很大需要花费很长时间,在这种情况下,我建议在SQL中进行练习,这更适合这种操作(更快更简单)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.