首页 > 解决方案 > Excel单元格公式计算一个表中的键,如果它们在另一个表中的值是特定条件

问题描述

我觉得这个问题的答案很简单,但我似乎无法理解它:我有一个很大的历史数据表(右侧示例),其中包含特定部件号何时发货,以及是否它们是两个类别之一(左侧示例)。

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 中的发货零件可能是重复的,并且在大多数情况下会比类型参考表大得多。

标签: excelexcel-formula

解决方案


如果您要计算日期大于 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")

推荐阅读