![Excel 公式/VBA 检测一组行的属性](https://linux22.com/image/1381591/Excel%20%E5%85%AC%E5%BC%8F%2FVBA%20%E6%A3%80%E6%B5%8B%E4%B8%80%E7%BB%84%E8%A1%8C%E7%9A%84%E5%B1%9E%E6%80%A7.png)
我在 Excel 表中有一个大型数据集,其中:
- A列:报价编号
- B列:机会编号
- C列:销售订单号。
一个报价编号将有多个机会编号。如果机会已关闭,则会生成销售订单编号。我需要一个公式,当与该报价相关的所有机会都有销售订单编号时,该公式可以将报价标记为“已关闭”状态。例如,
Column A | Column B | Column C
---------+----------+----------
123 | 247689 | K123
123 | 678889 | K456
578 | 555678 | K889
578 | 678999 |
对于上述例子,报价 123 应该标记为“已关闭”。
答案1
我的回答与 Doktoro Reichard 的回答有些相似。我的回答假设您的数据有效(列A
或中没有空白单元格B
),但不假设它们已排序。
我将使用2
和1337
来表示您有数据的第一行和最后一行;请根据您的情况进行调整。在单元格中D2
输入
=SUMPRODUCT(--(A2=A$2:A$1337), --ISBLANK(C$2:C$1337))
将其拖拽/填充到单元格。这将计算出与当前行具有相同报价编号(列 )且订单编号为空白(列 )D1337
的行数 。对于封闭式报价,该值为 0;对于开放式报价,该值为正数。A
C
答案2
使用辅助列。我假设您的数据已排序,因为这会使我的工作更轻松一些:
第一个辅助列(此处设计为)的公式D
如下:
=OR(IS.EMPTY(A1);IS.EMPTY(B1);IS.EMPTY(C1))
FALSE
如果报价编号、机会编号和销售订单编号均已填写,则返回此信息。TRUE
如果其中一个为空,则返回此信息。
这样,您现在可以=OR
对所有引用相同报价编号的辅助单元格执行 (此时排序会有所帮助)。如果相应报价的所有辅助单元格都返回FALSE
,则会出现以下情况:
=IF(OR(D1:D2);"Open";"Closed")
如果所有单元格都是 ,则会显示“已关闭” FALSE
。