Excel 公式/VBA 检测一组行的属性

Excel 公式/VBA 检测一组行的属性

我在 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),但不假设它们已排序。

我将使用21337来表示您有数据的第一行和最后一行;请根据您的情况进行调整。在单元格中D2输入

=SUMPRODUCT(--(A2=A$2:A$1337), --ISBLANK(C$2:C$1337))

将其拖拽/填充到单元格。这将计算出与当前行具有相同报价编号(列 )且订单编号为空白(列 )D1337的行数 。对于封闭式报价,该值为 0;对于开放式报价,该值为正数。AC

答案2

使用辅助列。我假设您的数据已排序,因为这会使我的工作更轻松一些:

第一个辅助列(此处设计为)的公式D如下:

=OR(IS.EMPTY(A1);IS.EMPTY(B1);IS.EMPTY(C1))

FALSE如果报价编号、机会编号和销售订单编号均已填写,则返回此信息。TRUE如果其中一个为空,则返回此信息。

这样,您现在可以=OR对所有引用相同报价编号的辅助单元格执行 (此时排序会有所帮助)。如果相应报价的所有辅助单元格都返回FALSE,则会出现以下情况:

=IF(OR(D1:D2);"Open";"Closed")

如果所有单元格都是 ,则会显示“已关闭” FALSE

相关内容