Excel VBA中具有多个条件的行总数

时间:2018-12-14 06:29:17

标签: excel vba excel-vba

我需要能够根据某些列条件对行进行汇总。 有一个包含以下各列的表: ID#(行号) 部分 顾客 工作 数量 部门 通过/失败

其中ID#可能是唯一的唯一值。

需要从表中获得以下内容:

  1. 需要返回所有工作。
  2. 需要返回所有新作业,应该是所有作业减去任何重复项(即,每个唯一的Part-Customer-Job-QTY-Dept的第一个条目(即,所有5个值都相等)。
  3. 所有重复作业,应全部为ID#-Part-Customer-Job-QTY-Dept-Pass。

例如:
1部分;客户;工作;数量;部门失败

2部分;顾客;工作;数量;部门通过

部分客户-工作-数量-部门相等,失败1次,通过2次。

1和2很容易,但是3有点棘手。

我应该在通过之前找到包含失败的ID#(行)。

可以在一个循环中完成吗?

虽然我在这里,但#2也可能很棘手。有没有简单的方法就可以求和,而无需重复?

任何帮助将不胜感激!

请让我知道是否需要其他信息。

以下示例数据应返回:

全部10

8(新)

2次重复

做样本让我在想如果只是从All中减去New会返回所有重复。

enter image description here

1 个答案:

答案 0 :(得分:1)

我不确定您是否真的需要使用VBA,因为问题似乎可以通过默认功能解决。

此处的关键问题是识别唯一密钥Part-Customer-Job-QTY-Dept的所有重复记录。请注意,实际上您不需要照顾IDPass/Fail,因为这些值不会影响您的计算。

一旦知道了唯一键,就可以通过以下步骤解决:

  1. 进行新的列连接以产生唯一键。 (F1)=A1&B1&C1&D1&E1
  2. 对于每一行,计算列中唯一键的外观。(G1)=countif(F:F,F1)
  3. 当计数大于1时,您可以确定记录正在复制,这意味着使用相同的唯一键在数据中有多行。=countif(G:G,">1")
  4. 一旦在每一行上都回答“是/否”,您只需对“是”进行计数即可得出重复的计数,从而根据您的定义进行新作业。

这也可以通过相同的逻辑在VBA中实现。